Russian Qt Forum
Ноябрь 23, 2024, 10:52 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QT3.3.6 Вставка картинок в MySQL  (Прочитано 6589 раз)
TukiNov
Гость
« : Сентябрь 10, 2006, 15:32 »

Суть проблемы такова. Необходимо загружать файлы в базу данных, а именно картинки, Создал поле blob.
Я так понимаю мне нада использовать QByteArray, но я ни как не могу понять как превести картинку к такому виду :
Код:

static const unsigned char image_6_data[] = {
    0x00,0x00,0x07,0x90,0x78,0x9c,0xbd,0xd3,0x5b,0x4c,0x93,0x77,0x18,0x06,
    0xf0,0xda,0x2d,0xbd,0x36,0x5e,0xec,0x00,0xa8,0xe0,0x89,0x7a,0x08,0x2a,
    ....
};

Я так понимаю если привести картинку к такому виду то, её можно будет без проблем сохранить в blob обычным sql запросом. Или я ошибаюсь ?
Помогите плиз Улыбающийся Желательно подробно Улыбающийся
Читал это : http://www.qtcentre.org/forum/f-qt-programming-2/t-save-images-to-database-2083.html
и это : http://www.qtcentre.org/forum/f-qt-programming-2/t-insert-an-qimage-or-an-qpixmap-into-a-mysql-database-and-then-get-it-back-3251.html
но в первом для QT4 а как во втором не получилось Грустный
Записан
Sergeich
Гость
« Ответ #1 : Сентябрь 10, 2006, 21:58 »

Код:
QByteArray ba;
QBuffer buf( ba );
buf.open( IO_WriteOnly );
yourImage.save( &buf, "XPM" );
buf.close();

QSqlQuery query;
query.prepare( "ISERT INTO aTable (id, image) VALUES ( :id, :image )" );
query.bindValue( ":id", imageId );
query.bindValue( ":image", ba );
query.exec();
Записан
Admin
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1988



Просмотр профиля
« Ответ #2 : Сентябрь 10, 2006, 22:02 »

и еще простой SQL бы тут не прокатил
надо было бы из 8 бит переводить в 7 бит
Записан
Sergeich
Гость
« Ответ #3 : Сентябрь 10, 2006, 23:05 »

Цитата: "Admin"
и еще простой SQL бы тут не прокатил
надо было бы из 8 бит переводить в 7 бит
А это зачем?
Записан
TukiNov
Гость
« Ответ #4 : Сентябрь 11, 2006, 00:33 »

х.м. кажется в базу она поместилась.
а вот считать её от туда что то не очень получается. делаю вот так :
Код:

void Form1::init()
{
QSqlQuery query;
query.exec("SELECT image from tmp");
 while (query.next()){
     QPixmap pixmap( query.value( 0 ).toPixmap() );
     image->setPixmap( pixmap );
 }
 if(!query.isActive()){query.lastError().showMessage();}
}

ошибок в query нет.
Записан
Admin
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1988



Просмотр профиля
« Ответ #5 : Сентябрь 11, 2006, 08:16 »

Цитата: "Sergeich"
Цитата: "Admin"
и еще простой SQL бы тут не прокатил
надо было бы из 8 бит переводить в 7 бит
А это зачем?


ну к примеру, ты задумайся

INSERT INTO TABLE (......данные....)

среди данных могут встетится кавычки - значит эх надо экранировать
к тому же есть непечатные символы и символы после 128

поэтому то и ввели операцию bind
Записан
TukiNov
Гость
« Ответ #6 : Сентябрь 11, 2006, 12:29 »

Цитата: "Admin"
Цитата: "Sergeich"
Цитата: "Admin"
и еще простой SQL бы тут не прокатил
надо было бы из 8 бит переводить в 7 бит
А это зачем?


ну к примеру, ты задумайся

INSERT INTO TABLE (......данные....)

среди данных могут встетится кавычки - значит эх надо экранировать
к тому же есть непечатные символы и символы после 128

поэтому то и ввели операцию bind

Картинка вставляется в базу нормально, проверял через mysqlcc, при клике на поле она показывается. Вот только вытащить её пока не получается Грустный

добавлено спустя 1 час 16 минут:

 сорри, тупил
сделал.
Воть :
Код:

void Form1::init()
{
QByteArray ba;
QSqlQuery query;
query.exec("SELECT image from tmp where id = '1'");
while (query.next()){
     ba = query.value( 0 ).toByteArray();
     QPixmap pixmap(ba);
     image->setPixmap( pixmap );
}
 if(!query.isActive()){query.lastError().showMessage();}
}
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.238 секунд. Запросов: 23.