Как сохранять изображения в базу данных MS SQL и извлекать изображения из базы данных (C#)

Как сохранять изображения в базу данных MS SQL и извлекать изображения из базы данных (C#)
Разрабатывая инфраструктуру для автоматических тестов, а именно функционал отвечающий за хранения результатов тестирования в базе данных, мне необходимо было решить задачу хранения изображений в базе данных (Microsoft SQL Server). Изучив вопрос понял, что есть множество способов. Здесь рассмотрим два из них, которые я реализовал и выбрал оптимальный для себя.

Рассмотрим примеры записи картинок в базу данных и извлечение картинок из базы данных.

Хранение изображений в MS SQL в двоичном формате в ячейке с типом «image»

Создадим базу данных и таблицу:

Обратите внимание на тип поля «screen».

Поместим любую картинку на диск «С». У меня картинка в формате jpg — «primer.jpg».

Создадим в Visual Studio консольное приложение. Добавим в файл «Program.cs»

Запишем изображение в базу данных методом PutImageBinaryInDb:

Поместим вызов метода в Main:

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

Как сохранять изображения в базу данных MS SQL и извлекать изображения из базы данных (C#)

Извлечём изображение из базы данных, для этого создадим метод GetImageBinaryFromDb:

Поместим вызов метода в Main:

Запускаем приложение и в указанное нами место сохраняется изображение из базы.

Данный метод я использую сейчас, так как в двоичном формате данные в базе занимают места меньше примерно в 100 раз по сравнению с методом, который я опишу дальше. Но возможно кому-то может понадобится описанный далее метод.

Хранение изображений в MS SQL в формате base64 в ячейке с типом «varchar»

В данном методе мы будем конвертировать изображения в base64. Создадим новую таблицу:

Обратите внимание на тип поля «screen».

Создадим метод PutImageBase64InDb:

Поместим вызов метода в Main:

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

Как сохранять изображения в базу данных MS SQL и извлекать изображения из базы данных (C#)

Извлечём изображение из базы данных, для этого создадим метод GetImageBase64FromDb:

Поместим вызов метода в Main:

Запускаем приложение и в указанное нами место сохраняется изображение из базы.

Вот и рассмотрели с вами методы сохранения изображения в базу данных MS SQL и извлечения изображения из базы данных. Есть ещё метод с использованием FILESTREAM, когда изображение пишется в файловую систему, но работа с ним идёт через обычное обращение к БД, но этот метод я не рассматривал, так как мне он пока не нужен.

Приложил для примера проект консольного приложения, которое содержит все описанные мной методы: скачать пример.

  • Понравилось? Добавьте в избранное или поделитесь с друзьями:

3 комментария

  1. Дмитрий

    Пример украл в шпаргалку.
    Спасибо.
    А для работы с SQLite ничего интересного нет?

  2. Дмитрий

    Ммм…Думаю всем будет интересны основы работы с SQLite.
    + Хитрости и тонкости.
    Работа со сложными объектами(музыка, фото)
    Какие ограничения у BD.
    Работа с базой через сеть.
    И т.д.т.п
    У вас понятный для новичков ход мыслей и стиль изложения ))

Добавить комментарий

Ваш e-mail не будет опубликован.