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

  • Автор темы Автор темы sibbora
  • Дата начала Дата начала

sibbora

Client
Регистрация
23.11.2013
Сообщения
149
Реакции
73
Баллы
28
Всем доброго дня! Может кто привести пример кода сниппета для сохранения файла картинки в базу данных MySQL, а также обратной процедуры - выгрузки файла из BLOB-поля БД в файл?
 
Нашёл решение. Пример кода:
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
А можно вопрос зачем такое извращение? :)
 
Файлики, однако быстрее и надежнее, в рамках персоналок. В частности из-за особенностей архитектуры. По распространенной аналогии с феррари и автобусом.
Кстати, файлики и на автобусах быстрее, иначе бы Google не использовал этот формат для своих баз.
 
Файлики, однако быстрее и надежнее, в рамках персоналок. В частности из-за особенностей архитектуры. По распространенной аналогии с феррари и автобусом.
Кстати, файлики и на автобусах быстрее, иначе бы Google не использовал этот формат для своих баз.
Под "этим" форматом вы подразумеваете NOSQL БД? Это уже даже не крупные, а гигантские проекты. В моём случае всё несколько проще.
 
Раз уж снова вернулся к этой теме. Вот образец кода для сохранения картинки из базы в файл на диске:

Код:
Развернуть Свернуть Копировать
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
По сути, любой формат баз данных отличный от SQL можно назвать NOSQL :-D
Mongo тоже подходит. Но речь была базе данных основанной на файловых дескрипторах. По сути, вместо таблиц используются названия каталогов, а вместо ячеек - файлы. Производительность отличается в несколько раз.
 
Для больших проектов база данных как раз более приемлемое решение, чем куча файликов на диске.
Еще раз объясни нах базу нагружать ИЗОБРАЖЕНИЯМИ?
Если можно хранить пути к ним...
Просто есть пара баз на 10млн записей вот одна из них содержит пути к изображениям ) вес 3гб... если туда еще пихнуть сами изображения то я хз че будет...
Вот и пытаюсь понять нахуя?!
 
  • Оценить
Реакции: svaminar
В базе целесообразней хранить пути на изображения, Gfoblin правильную мысль подкидывает, а то проблемы могут возникать потом из-за объёмов баз, например, при экспорте и т.д. если это mysql и если ты не знаешь его на уровне консоли.
 

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