0 / 0 / 2
Регистрация: 02.09.2013
Сообщений: 237
1

Выгрузка файлов из базы данных

11.09.2013, 17:17. Показов 5151. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Задача заключается в том, чтобы приложения скачивало файл(которой представлен в базе в виде двоичных данных ) из базы на жесткий диск. Пишу такой вот код - не работает. Подскажите что нибудь.
C#
1
2
3
4
5
6
7
8
9
10
            SaveFileDialog saveFileDialog = new SaveFileDialog();
            saveFileDialog.InitialDirectory = "E:\\";
            if (saveFileDialog.ShowDialog() != DialogResult.OK)
            { return; }
            string filePath2 = saveFileDialog.FileName;
 
            FileStream fileStream = new FileStream(filePath2, FileMode.Create, FileAccess.ReadWrite);
            BinaryWriter binWriter = new BinaryWriter(fileStream);
            binWriter.Write(pop);
            binWriter.Close();
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.09.2013, 17:17
Ответы с готовыми решениями:

Выгрузка данных из базы в dataGridView
Всем привет возникла такая проблема при выполнения запроса в dataGridView не всегда поступают...

Выгрузка ехе-шника из базы данных
Есть код который скачивает изображение из базы данных на жесткий диск. Как реализовать этот же...

Выгрузка данных и передача файлов MySQL
У каждого пользователя есть приложение, в грид которого выводятся записи из mysql, скажите...

Скачивание файлов из базы данных
Задача такая - мое приложение должно скачивать exe-шник из базы. Подскажите как это сделать?

10
320 / 280 / 109
Регистрация: 27.09.2010
Сообщений: 1,058
11.09.2013, 20:45 2
1) Возникает ошибка. Какая?
2) Код кусочный. Ну нифига не понятно.
0
0 / 0 / 2
Регистрация: 02.09.2013
Сообщений: 237
11.09.2013, 21:56  [ТС] 3
Извиняюсь.
1. Короче так ошибки ни какой не возникает - программа создает файл, но он не тот что нужно - весит всего 1Кб - и не открывается - хотя должен, при том я пробовал таким образом скачать два разных файл и в обоих случаях когда он скачивался - весил 1Кб.
2. Надеюсь сейчас будет немного по понятнее ("pop" - это как раз та переменная в которую мы кладем наши двоичные данные)
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
            OleDbConnection connection;
            connection = new OleDbConnection(@"File Name = Connect.udl");
    OleDbCommand command2 = new OleDbCommand("SELECT Binary FROM dbo.t_Files WHERE [Index]='4';", connection);
            try
            {
                connection.Open();   
            }
            catch
            {
                MessageBox.Show("Невозможно подключиться к базе");
            }
 
            OleDbDataReader reader2 = command2.ExecuteReader();
            
            while (reader2.Read())
            {
                pop = reader2["Binary"].ToString();
            }
 
            SaveFileDialog saveFileDialog = new SaveFileDialog();
            saveFileDialog.InitialDirectory = "E:\\";
            if (saveFileDialog.ShowDialog() != DialogResult.OK)
            { return; }
            string filePath2 = saveFileDialog.FileName;
 
            FileStream fileStream = new FileStream(filePath2, FileMode.Create, FileAccess.ReadWrite);
            BinaryWriter binWriter = new BinaryWriter(fileStream);
            binWriter.Write(pop);
            binWriter.Close();
0
320 / 280 / 109
Регистрация: 27.09.2010
Сообщений: 1,058
11.09.2013, 22:01 4
Может нужно так:
C#
1
2
3
4
while (reader2.Read())
            {
                pop+= reader2["Binary"].ToString();
            }
0
0 / 0 / 2
Регистрация: 02.09.2013
Сообщений: 237
11.09.2013, 22:23  [ТС] 5
неа ни чего не изменилось
0
320 / 280 / 109
Регистрация: 27.09.2010
Сообщений: 1,058
11.09.2013, 22:27 6
Какое число показывает эта команда:
SQL
1
SELECT LEN(BINARY) FROM dbo.t_Files WHERE [INDEX]='4'
0
0 / 0 / 2
Регистрация: 02.09.2013
Сообщений: 237
11.09.2013, 22:33  [ТС] 7
19456
0
320 / 280 / 109
Регистрация: 27.09.2010
Сообщений: 1,058
11.09.2013, 23:02 8
Ну вот. Значит из базы достается нормальный файл. Теперь измеряем sizeof(pop) перед записью в файл.
1
0 / 0 / 2
Регистрация: 02.09.2013
Сообщений: 237
12.09.2013, 00:16  [ТС] 9
Извиняюсь конечно за тупой вопрос но я че то sizeof не могу вывести)
пытаюсь вывести в тексбокс
C#
1
textBox1.Text = sizeof(pop);
пишет что "Ошибка 1 Не удалось найти имя типа или пространства имен "pop" (пропущена директива using или ссылка на сборку?) C:\Users\Form1.cs
"

Добавлено через 24 минуты
Да и еще может быть это вам поможет. Я тут в dataGridView вывел значение переменной pop и вместо двоичных данных там была такая строчка "System.Byte[]" так и должно быть?
0
6280 / 3565 / 898
Регистрация: 28.10.2010
Сообщений: 5,926
12.09.2013, 11:21 10
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
while (reader2.Read())
{
    byte[] pop = (byte[])reader2["Binary"];
    SaveFileDialog saveFileDialog = new SaveFileDialog();
    saveFileDialog.InitialDirectory = "E:\\";
    if (saveFileDialog.ShowDialog() != DialogResult.OK)
    { return; }
    string filePath2 = saveFileDialog.FileName;
    using (FileStream fileStream = new FileStream(filePath2, 
                FileMode.Create, 
                FileAccess.ReadWrite))
    {
        BinaryWriter binWriter = new BinaryWriter(fileStream);
        binWriter.Write(pop, 0, pop.Length);
    }
    break;
}
2
0 / 0 / 2
Регистрация: 02.09.2013
Сообщений: 237
12.09.2013, 12:39  [ТС] 11
о все спасибо!!) скачивается. но только файлы не открываются. можете напоследок подсказать почему так? и как сделать так чтобы файл открывался сразу после запуска приложение т.е. без появления диалогового окна?
0
12.09.2013, 12:39
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.09.2013, 12:39
Помогаю со студенческими работами здесь

Выгрузка файлов из ДБ
Здраствуйте, помогите нубу ) . Есть БД MS SQL как сделать выгрузку файла с таблицы и сохронить его...

Создание базы данных, открытие из под одной базы данных MS Access
Здравствуйте. В общем, C# начал заниматься только вот и сразу была поставлена задача создать базу...

Выгрузка файлов на сервер
Здравствуйте, форумчане! Долгое время пользовался этим форумом в режиме ReadOnly, так как обычно на...

Запись данных в базу данных SQL и выгрузка таблицы в форму
Нужно сделать 2 формы, одну с несколькими textBox'ами, чтобы при нажатии кнопки информация...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru