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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Qt 4.5.0, SQL 5.0 Картинка не грузится в базу :( - решено  (Прочитано 4663 раз)
Pechept
Гость
« : Ноябрь 05, 2009, 07:30 »

Помогиде пожалуйста, код взял с форума, но картинка не грузится и не выгружается из базы
код загрузки
Код:
    QString filename= QFileDialog::getOpenFileName(this,"open picture");
  
    image.load(filename);
    QSqlQuery query;
     QByteArray ba;
     QBuffer buf( &ba );
     buf.open( QIODevice::ReadWrite);
     image.save( &buf, "XPM" );
     buf.close();
     query.prepare("INSERT INTO users (login,pass,role,foto) VALUES (:log, :pas, :rol,:fotko);");
     query.bindValue(":log",m_ui->login->text());
     query.bindValue(":pas", m_ui->pass->text());
     query.bindValue(":rol", m_ui->role->currentText());
     query.bindValue(":fotko", ba );
     query.exec();

Код считывания:
Код:
    QString im=m_ui->tableWidget->item(row,0)->text();
    query.prepare("Select foto from users where login=:log");
    query.bindValue(":log",im);
    query.exec();

    QByteArray ba;
    m_ui->label->setBackgroundRole(QPalette::Base);
    m_ui->label->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored);
    m_ui->label->setScaledContents(true);
    while (query.next())
    {
    ba = query.value( 0 ).toByteArray();
    QPixmap pixmap(ba);
    m_ui->label->setPixmap( pixmap );
    }

Все запросы выполняются, запись в БД создается, но Navicat картинку не отображает
Хелп
« Последнее редактирование: Ноябрь 05, 2009, 08:40 от Pechept » Записан
Makss
Гость
« Ответ #1 : Ноябрь 05, 2009, 07:56 »

проверьте - после чтения из базы, прочитал ли он картинку, сохраните её просто в файл
если картинка есть, значит всё нормально, где-то что-то не прально написано после запроса, а вот если картинки нету, тут уже похуже скорее всего, возможно что её даже в базе нет, хотя "не возможно" а оно так и есть

сохраните в файл, посмотрим на результат и подумаем что дальше делать...
Записан
Pechept
Гость
« Ответ #2 : Ноябрь 05, 2009, 07:58 »

сохранил, пейнт не открыл, что сохранил - непонятно, но поле блоб - занято, почему-то Навикат показывает 36кбайт, хотя фалы указывал 4-5 кбайт, беда
« Последнее редактирование: Ноябрь 05, 2009, 08:00 от Pechept » Записан
BaltikS
Гость
« Ответ #3 : Ноябрь 05, 2009, 08:15 »

ТЫ сохраняешь в формате XPM естественно, файл будет другого размера и естественно Paint не откроет формат XPM
Записан
Pechept
Гость
« Ответ #4 : Ноябрь 05, 2009, 08:23 »

предложите пути решения проблемы пожалуйста
Записан
Pechept
Гость
« Ответ #5 : Ноябрь 05, 2009, 08:25 »

прогресс, сохранил в том же формате навикат открыл, осталось разобратся со считыванием
Записан
Pechept
Гость
« Ответ #6 : Ноябрь 05, 2009, 08:38 »

Код:
double qwe=ba.length();
    m_ui->doubleSpinBox->setValue(qwe);
    QPixmap pixmap(ba);
    m_ui->label->setPixmap( pixmap );
Размер вывел точно, картинка не появилась, у кого есть соображения???
Записан
Pechept
Гость
« Ответ #7 : Ноябрь 05, 2009, 08:40 »

Все решилось строчками:
Код:
   QPixmap pixmap;
    pixmap.loadFromData(ba);
    m_ui->label->setPixmap( pixmap );

Спасибо за подсказку про расширение
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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