crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Как добавить изображение в СУБД SQL?, Хотелось бы, чтобы из БД считывалась небольшая картинка.
DruidCat
  опции профиля:
сообщение 19.9.2015, 17:24
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 9
Регистрация: 15.10.2013
Пользователь №: 3958

Спасибо сказали: 0 раз(а)




Репутация:   0  


Люди добрые помогите новичку. Моя программа работает с базой данных, хотелось бы записать в неё небольшую картинку с расширением png. А вот как это сделать уму не приложу. Была идея у меня прочесть png файл явно, и всё это записать в базу данных. Но я думаю что из этого ничего не выйдет. Может есть способ добавления файлов в БД? Подскажите с теоретической точки зрения. :)
PS: Картинка - это логотип конторы, в которой я работаю, идея в том, чтобы кто-нибуть в конторе, задал логотип в программе, а все остальные клиенты БД, считали бы этот логотип из БД, и у всех бы в программе красовался один и тот же логотип. :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
FireBlack
  опции профиля:
сообщение 20.9.2015, 10:51
Сообщение #2


Студент
*

Группа: Участник
Сообщений: 38
Регистрация: 17.10.2010
Из: г.Пенза
Пользователь №: 2121

Спасибо сказали: 13 раз(а)




Репутация:   1  


Вообще хранить изображения в базе данных это не очень хорошо, но если очень хочется...

Сначала, создаете в базе данных в нужной Вам таблице поле типа BLOB.
CREATE TABLE table1 ( ..., image BLOB, ... );

Потом загружаете картинку через QPixmap или QImage и сохраняете в QByteArray.
Раскрывающийся текст
QPixmap pixmap;
pixmap.load("logo.png");

QByteArray pixmapData;
QDataStream stream(&pixmapData, QIODevice::WriteOnly);
stream << pixmap;

Далее записываете QByteArray в базу данных.
Раскрывающийся текст
QSqlQuery query(QSqlDatabase::database("your connection name"));
query.prepere("INSERT INTO table1 VALUES (..., :image, ...);");
query.bindValue(":image", pixmapData);
query.exec();

При чтении из базы данных процедура обратная.
Раскрывающийся текст
QSqlQuery query(QSqlDatabase::database("your connection name"));
query.exec("SELECT * FROM table1");
while(query.next())
{
      ...
      QByteArray pixmapData = query.value("image").toByteArray();
      QDataStream stream(pixmapData);
      QPixmap pixmap;
      stream >> pixmap;
      ...
}

P.S.: QPixmap можно перегнать в QByteArray, и наоборот, любым удобным Вам способом, не обязательно использовать QDataStream.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 17.2.2020, 22:15