2016-06-16 4 views
0

Я получил доступ к базе данных, в которой хранятся фотографии сотрудников с помощью запроса C#. Мой вопрос: как я могу сохранить фотографии в обычный файл на своем жестком диске с помощью программы C#? Чтобы создать файл, я понимаю, что буду использовать FileMode.Create и, возможно, класс SaveFileDialog?Как сохранить двоичный файл, доступный из базы данных в C#?

Это, как я прочитал в файле:

using (SqlConnection connection = new SqlConnection(connectionString)) 
{ 
    SqlCommand command = new SqlCommand(queryString, connection); 
    connection.Open(); 
    SqlDataReader reader = command.ExecuteReader(); 
    try 
    { 
     while (reader.Read()) 
     { 
      Console.WriteLine(String.Format("{0}, {1}, {2}, {3}", reader["emp_id"], reader["first_name"], reader["last_name"], reader["photo"])); 
      FileStream fs = new FileStream(SaveFileDialog.FileName, FileMode.Open); //something of this nature? 
     } 
    } 
    finally 
    { 
     reader.Close(); 
    } 
} 

Я извлек необходимую информацию из this SO question, но это не помогает мне на сохранение файла. Итак, я прошу некоторую помощь о том, как сэкономить двоичный файл, который является картиной, которую я хочу сохранить на своем компьютере.

+0

В какой базе данных? Каков тип данных столбца, содержащего данные изображения? –

+0

@alex Это база данных Microsoft. И столбец представляет собой двоичную строку. –

ответ

3

File.WriteAllBytes будет записывать байты в файл с заданным именем.

В полной мере, что-то вроде

File.WriteAllBytes(fileName, (byte[])reader["photo"]); 

Вы можете использовать диалог сохранения файла для сохранения файлов, да. Но это больше вопрос вашего дизайна UX (и дизайна приложения). В общем, циклы и диалоги не очень хорошо воспроизводятся - если вы заставляете меня выбирать 10 разных имен файлов, чтобы сохранять фотографии с именами, которые вы могли бы выбрать сами, я буду злиться на вас: P

+0

Ха-ха спасибо за ответ! Я думаю, что я просто конкатенирую некоторые строки для переменной имени файла. –