Достаточно часто приложения, особенно это касается web-приложений, работают с большим количеством графических объектов. Зачастую, эти графические файлы хранятся на том же сервере, что и само приложение, а в БД находятся лишь ссылки (пути) на эти графические файлы. Таким образом удается значительно снижать объем информации находящейся в БД.
Однако, случается так, что целесообразнее в БД хранить сами изображения. Для этих целей создадим простую таблицу:

Имеем три столбца: ID(первичный ключ), ImageByte(поле для самого изображения) и AltText(текст для свойства alt тега img изображения).
К примеру, на локальном диске «С» имеется графический файл GraphFile.png, который мы и хотим занести в БД.
Для рвботы с БД будем использовать объект-команду SqlCommand.
Для начала настраиваем объект SqlConnection и формируем объект SqlCommand:
SqlConnection connection = new SqlConnection(myConnectionString);
SqlCommand cmd = new SqlCommand(
"INSERT INTO MyTable (ID, ImageByte, AltText)" +
"VALUES (@ID, @ImageByte, @AltText)", connection);
Затем, используя тип FileStream читаем содержимое файла
FileStream fStream = new FileStream(
"c:\\GraphFile.png", FileMode.Open, FileAccess.Read);
Теперь создадим массив байтов размерностью в количество полученных байтов и переместим в него данные из объекта fStream:
Byte[] imageBytes = new byte[fStream.Length];
fStream.Read(imageBytes, 0, imageBytes.Length);
Таким образом мы получили массив байтов, представляющих исходное изображение.
Теперь осалось лишь настроить параметры для команды вставки:
SqlParameter par = new SqlParameter(
"@ID", SqlDbType.UniqueIdentifier);
par.Value = Guid.NewGuid();
par.Direction = ParameterDirection.Input;
cmd.Parameters.Add(par);
par = new SqlParameter("@ImageByte", SqlDbType.Image);
par.Value = imageBytes;
cmd.Parameters.Add(par);
par = new SqlParameter("@AltText", SqlDbType.NVarChar);
par.Value = "Просто картинка";
cmd.Parameters.Add(par);
Передаем в БД готовую команду на выполнение:
connection.Open();
cmd.ExecuteNonQuery();
connection.Dispose();
Все, изображение в БД, если конечно не возникло исключительной ситуации, о чем вы должны обязательно побеспокоиться.
В следующей статье мы разберем пример чтения бай-данных (изображения) из поля таблицы Sql-Server БД