Как сохранить картинку в MySQL-базу?

sibbora

Client
Регистрация
23.11.2013
Сообщения
149
Благодарностей
73
Баллы
28
Всем доброго дня! Может кто привести пример кода сниппета для сохранения файла картинки в базу данных MySQL, а также обратной процедуры - выгрузки файла из BLOB-поля БД в файл?
 

sibbora

Client
Регистрация
23.11.2013
Сообщения
149
Благодарностей
73
Баллы
28
Нашёл решение. Пример кода:
var command = new MySql.Data.MySqlClient.MySqlCommand();
string strConnectionString = "Data source=localhost;UserId=root;Password=bla;database=bla;Charset=utf8;";
command.Connection = new MySql.Data.MySqlClient.MySqlConnection(strConnectionString);
command.Connection.Open();

string strImageInsertRequest = "INSERT INTO zp_profiles (image) VALUES (@image);";
MySql.Data.MySqlClient.MySqlCommand ImageInsertDBCommand = new MySql.Data.MySqlClient.MySqlCommand(strImageInsertRequest, command.Connection)

if (File.Exists(strImageFilePath)) {
FileStream fsImage;
BinaryReader brImage;
byte[] ImageData;
fsImage = new FileStream(strImageFilePath, FileMode.Open, FileAccess.Read);
brImage = new BinaryReader(fsImage);
ImageData = brImage.ReadBytes((int)fsImage.Length);
brImage.Close();
fsImage.Close();
ImageInsertDBCommand.Parameters.AddWithValue("@file_avatar", ImageData);
}else{
ImageInsertDBCommand.Parameters.AddWithValue("@file_avatar", null);
}

ProfileInsertDBCommand.ExecuteNonQuery();

command.Connection.Close();
 
  • Спасибо
Реакции: pym933 и Astraport

Gfoblin

Client
Регистрация
30.05.2013
Сообщения
4 519
Благодарностей
991
Баллы
113
А можно вопрос зачем такое извращение? :-)
 

sibbora

Client
Регистрация
23.11.2013
Сообщения
149
Благодарностей
73
Баллы
28

zortexx

Client
Регистрация
19.09.2011
Сообщения
2 520
Благодарностей
1 223
Баллы
113
Файлики, однако быстрее и надежнее, в рамках персоналок. В частности из-за особенностей архитектуры. По распространенной аналогии с феррари и автобусом.
Кстати, файлики и на автобусах быстрее, иначе бы Google не использовал этот формат для своих баз.
 

sibbora

Client
Регистрация
23.11.2013
Сообщения
149
Благодарностей
73
Баллы
28
Файлики, однако быстрее и надежнее, в рамках персоналок. В частности из-за особенностей архитектуры. По распространенной аналогии с феррари и автобусом.
Кстати, файлики и на автобусах быстрее, иначе бы Google не использовал этот формат для своих баз.
Под "этим" форматом вы подразумеваете NOSQL БД? Это уже даже не крупные, а гигантские проекты. В моём случае всё несколько проще.
 

sibbora

Client
Регистрация
23.11.2013
Сообщения
149
Благодарностей
73
Баллы
28
Раз уж снова вернулся к этой теме. Вот образец кода для сохранения картинки из базы в файл на диске:

Код:
SQLReader.Read();

UInt32 intMaxFileSize = 10000; //создаём буфер (размер в килобайтах)
byte[] rawData = new byte[intMaxFileSize ];

SQLReader.GetBytes(SQLReader.GetOrdinal("file_avatar"), 0, rawData, 0, (int)intMaxFileSize);

Image image1 = new Bitmap(new MemoryStream(rawData));
image1.Save(@"D:\test2.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
 
  • Спасибо
Реакции: pym933 и mux76

zortexx

Client
Регистрация
19.09.2011
Сообщения
2 520
Благодарностей
1 223
Баллы
113
По сути, любой формат баз данных отличный от SQL можно назвать NOSQL :D
Mongo тоже подходит. Но речь была базе данных основанной на файловых дескрипторах. По сути, вместо таблиц используются названия каталогов, а вместо ячеек - файлы. Производительность отличается в несколько раз.
 

Gfoblin

Client
Регистрация
30.05.2013
Сообщения
4 519
Благодарностей
991
Баллы
113
Для больших проектов база данных как раз более приемлемое решение, чем куча файликов на диске.
Еще раз объясни нах базу нагружать ИЗОБРАЖЕНИЯМИ?
Если можно хранить пути к ним...
Просто есть пара баз на 10млн записей вот одна из них содержит пути к изображениям ) вес 3гб... если туда еще пихнуть сами изображения то я хз че будет...
Вот и пытаюсь понять нахуя?!
 
  • Спасибо
Реакции: svaminar

bhairava7

Client
Регистрация
18.08.2015
Сообщения
154
Благодарностей
15
Баллы
18
В базе целесообразней хранить пути на изображения, Gfoblin правильную мысль подкидывает, а то проблемы могут возникать потом из-за объёмов баз, например, при экспорте и т.д. если это mysql и если ты не знаешь его на уровне консоли.
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)