Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/26: Рейтинг темы: голосов - 26, средняя оценка - 4.54
0 / 0 / 2
Регистрация: 02.09.2013
Сообщений: 237

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

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

Студворк — интернет-сервис помощи студентам
Задача заключается в том, чтобы приложения скачивало файл(которой представлен в базе в виде двоичных данных ) из базы на жесткий диск. Пишу такой вот код - не работает. Подскажите что нибудь.
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
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.09.2013, 17:17
Ответы с готовыми решениями:

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

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

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

10
320 / 280 / 109
Регистрация: 27.09.2010
Сообщений: 1,058
11.09.2013, 20:45
1) Возникает ошибка. Какая?
2) Код кусочный. Ну нифига не понятно.
0
0 / 0 / 2
Регистрация: 02.09.2013
Сообщений: 237
11.09.2013, 21:56  [ТС]
Извиняюсь.
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
Может нужно так:
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  [ТС]
неа ни чего не изменилось
0
320 / 280 / 109
Регистрация: 27.09.2010
Сообщений: 1,058
11.09.2013, 22:27
Какое число показывает эта команда:
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  [ТС]
19456
0
320 / 280 / 109
Регистрация: 27.09.2010
Сообщений: 1,058
11.09.2013, 23:02
Ну вот. Значит из базы достается нормальный файл. Теперь измеряем sizeof(pop) перед записью в файл.
1
0 / 0 / 2
Регистрация: 02.09.2013
Сообщений: 237
12.09.2013, 00:16  [ТС]
Извиняюсь конечно за тупой вопрос но я че то sizeof не могу вывести)
пытаюсь вывести в тексбокс
C#
1
textBox1.Text = sizeof(pop);
пишет что "Ошибка 1 Не удалось найти имя типа или пространства имен "pop" (пропущена директива using или ссылка на сборку?) C:\Users\Form1.cs
"

Добавлено через 24 минуты
Да и еще может быть это вам поможет. Я тут в dataGridView вывел значение переменной pop и вместо двоичных данных там была такая строчка "System.Byte[]" так и должно быть?
0
 Аватар для Петррр
6721 / 3570 / 900
Регистрация: 28.10.2010
Сообщений: 5,937
12.09.2013, 11:21
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  [ТС]
о все спасибо!!) скачивается. но только файлы не открываются. можете напоследок подсказать почему так? и как сделать так чтобы файл открывался сразу после запуска приложение т.е. без появления диалогового окна?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.09.2013, 12:39
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru