Форум программистов
 
Расширенный поиск
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > C++ > C/C++ Базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Excel VBA, CAD, Софт, ОС, Windows, Ubuntu, Android, VPS
Win Api, Assembler, C++, Java, Pascal, Lazarus, Delphi, OpenGL, DirectX
C#, Qt, .NET, ASP.NET, Windows Forms, ADO.NET, Framework, WPF, UWP, WinRT, XAML
HTML, CSS, JavaScript, Ajax, PHP, Perl, Python, Ruby, SQL, WordPress, API, XML, JSON, ActionScript, Flash

Ответ
 
Опции темы
Старый 28.10.2015, 08:20   #1
swkion
Новичок
 
Регистрация: 28.10.2015
Сообщений: 8
Репутация: 10
Вопрос Загрузка и просмотр изображения в Базу

Пишу на Qt, нужно загрузить(сохранить) изображение(jpg) в базе данных в MySQL.Загружаю в поле mediumblob.

Загружаю изображение в QImage:
Код:

...
    QByteArray *qByteArray = new QByteArray();
    QBuffer *qBuffer = new QBuffer(qByteArray, this);
    if(img.byteCount()!=0)
   {
      qBuffer->open(QIODevice::WriteOnly);
      img.save(qBuffer,"JPG");
      qBuffer->close();
    }
 
...
//загружаю изображение в базу,
    rielt->query->bindValue(":pl",qByteArray->constData());
...

Вывожу из базы загруженное изображение:
Код:

...
        QByteArray fromDB;
        fromDB=q.value(19).toByteArray();
        qDebug()<<fromDB;
        img.loadFromData(fromDB,"JPG");
        img.scaled(251,161,Qt::IgnoreAspectRatio,Qt::SmoothTransformation);
        ui->lblImg->setPixmap(QPixmap::fromImage(img));
        ui->lblImg->show();
...

При показе изображения(выводе) выдает ошибку:
Код:

...
"\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD"
QImage::scaled: Image is a null image
"\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD"
QImage::scaled: Image is a null image
...

Судя по всему изображение загружается не правильно
Форумчане подскажите что я делаю не так?

Во вложении запрос создания этой таблицы.
Вложения
Тип файла: txt create.txt (2.1 Кб, 3 просмотров)
swkion вне форума   Ответить с цитированием
Старый 28.10.2015, 08:32   #2
Stilet
Белик Виталий :)
Профессионал
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Адрес: Украина, Донецкая область, г. Краматорск
Сообщений: 57,968
Репутация: 6787
По умолчанию

Выгрузи из БЛОБ в файл. Открой файл - покажут из него просмотрщики картинку?
__________________
I'm learning to live...
Stilet вне форума   Ответить с цитированием
Старый 28.10.2015, 09:11   #3
swkion
Новичок
 
Регистрация: 28.10.2015
Сообщений: 8
Репутация: 10
Сообщение

Цитата:
Сообщение от Stilet Посмотреть сообщение
Выгрузи из БЛОБ в файл. Открой файл - покажут из него просмотрщики картинку?
Картинку не показывает пишет нет данных.
Значит ошибка где-то в коде которых грузит в базу. Вопрос открыт.

Гружу в базу(ошибок не выдает):
Код:

...
    QByteArray *qByteArray = new QByteArray();
    QBuffer *qBuffer = new QBuffer(qByteArray, this);
    if(img.byteCount()!=0)
    { 
      qBuffer->open(QIODevice::WriteOnly);
      img.save(qBuffer,"JPG");
      qBuffer->close();
    }
...


Последний раз редактировалось swkion; 28.10.2015 в 09:14.
swkion вне форума   Ответить с цитированием
Старый 28.10.2015, 10:13   #4
waleri
Профессионал
 
Регистрация: 13.07.2012
Адрес: Нижний Новгород
Сообщений: 4,753
Репутация: 1438
По умолчанию

Цитата:
Сообщение от swkion Посмотреть сообщение
Значит ошибка где-то в коде которых грузит в базу.
Ошибка может быть в коде, который пишет в базу.

Последний раз редактировалось waleri; 28.10.2015 в 10:15.
waleri вне форума   Ответить с цитированием
Старый 28.10.2015, 10:16   #5
Stilet
Белик Виталий :)
Профессионал
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Адрес: Украина, Донецкая область, г. Краматорск
Сообщений: 57,968
Репутация: 6787
По умолчанию

Цитата:
Вопрос открыт.
Покажи код записи в БД.
__________________
I'm learning to live...
Stilet вне форума   Ответить с цитированием
Старый 28.10.2015, 10:20   #6
swkion
Новичок
 
Регистрация: 28.10.2015
Сообщений: 8
Репутация: 10
Сообщение

В самом первом посте первый код.
swkion вне форума   Ответить с цитированием
Старый 28.10.2015, 10:40   #7
Stilet
Белик Виталий :)
Профессионал
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Адрес: Украина, Донецкая область, г. Краматорск
Сообщений: 57,968
Репутация: 6787
По умолчанию

Цитата:
В самом первом посте первый код.
Там только привязка данных к полю. А постинг с коммитом где?
__________________
I'm learning to live...
Stilet вне форума   Ответить с цитированием
Старый 28.10.2015, 11:13   #8
swkion
Новичок
 
Регистрация: 28.10.2015
Сообщений: 8
Репутация: 10
Сообщение

Все уже выложил, что еще нужно?

Загружаю jpg в QImage
QImage гружу в QByteArray
Привязываю QByteArray к полю и выполняю запрос.

вот код всей процедуры:
Код:

...
   //Гружу изображение в QByteArray
    QByteArray *qByteArray = new QByteArray();
    QBuffer *qBuffer = new QBuffer(qByteArray, this);
    if(img.byteCount()!=0)
    { // Заходит в этот блок
      qBuffer->open(QIODevice::WriteOnly);
      img.save(qBuffer,"JPG");//сохраняю изображение
      qBuffer->close();
    }
    //Запрос на добавление записи(хр.процедура)
    rielt->query=new QSqlQuery(rielt->db);
    rielt->query->prepare("call addre(:num,:re,:c,:p,:th,:empl,:cl,:org,:op,:dogv,:n,:city,:r,:adr,:room,:sqr,:fl,:flh,:hdate,:pl,:st,:sum,:clt)");
    rielt->query->bindValue(":num",ui->eNum->text().toInt());
    rielt->query->bindValue(":re",ui->cbEstate->currentText());
    rielt->query->bindValue(":c",ui->cbCountry->currentText());
    rielt->query->bindValue(":p",ui->cbPlan->currentText());
    rielt->query->bindValue(":th",ui->cbPostroy->currentText());
    rielt->query->bindValue(":empl",ui->cbEmpl->currentText());
    rielt->query->bindValue(":cl",ui->cbClient->currentText());
    rielt->query->bindValue(":org",ui->cbOrg->currentText());
    rielt->query->bindValue(":op",ui->cbOp->currentText());
    rielt->query->bindValue(":dogv",ui->deDateDog->text());
    rielt->query->bindValue(":n",ui->eName->text());
    rielt->query->bindValue(":city",ui->eCity->text());
    rielt->query->bindValue(":r",ui->eRaion->text());
    rielt->query->bindValue(":adr",ui->eAdr->text());
    rielt->query->bindValue(":room",ui->eRooms->text().toInt());
    rielt->query->bindValue(":sqr",ui->eSqr->text().toInt());
    rielt->query->bindValue(":fl",ui->eEtaj->text().toInt());
    rielt->query->bindValue(":flh",ui->eCountE->text().toInt());
    rielt->query->bindValue(":hdate",ui->deDateHouse->text());
    rielt->query->bindValue(":pl",qByteArray->constData());//QByteArray (mediumblob)
    rielt->query->bindValue(":st",ui->eStatus->text());
    rielt->query->bindValue(":sum",ui->teSummary->toPlainText());
    if(ui->bComplite->isChecked())
    {
        rielt->query->bindValue(":clt",1);
    }
    else
    {
        rielt->query->bindValue(":clt",0);
    }
//выполняю запрос
    rielt->query->exec();
...


Последний раз редактировалось swkion; 28.10.2015 в 11:20.
swkion вне форума   Ответить с цитированием
Старый 28.10.2015, 11:27   #9
Stilet
Белик Виталий :)
Профессионал
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Адрес: Украина, Донецкая область, г. Краматорск
Сообщений: 57,968
Репутация: 6787
По умолчанию

Цитата:
что еще нужно?
Нужно еще не нервничать, а почитать доку, где сказано, что exec() вернет результат вставки.
Код:

if(!rielt->query->exec()) проверяем QSqlQuery::lastError()

Ты уверен что твоя addre() правильно отрабатывает?
__________________
I'm learning to live...
Stilet вне форума   Ответить с цитированием
Старый 28.10.2015, 11:41   #10
swkion
Новичок
 
Регистрация: 28.10.2015
Сообщений: 8
Репутация: 10
Сообщение

Проверял несколько раз, работает, все вствляет,запрос работает нормально, вот только с изображениями не понятно что твориться, данные в поле вствляет. а вот на выходе нет изображения.

Изображение в QImage грузится. Загружал его(QImage) в Label перед сохранением в базе. А вот дальше не пойму. Гуглил все примеры привиденные сделаны также.
swkion вне форума   Ответить с цитированием
Ответ



Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Загрузка сообщения в базу данных VitStar03 PHP 14 08.04.2013 13:37
Сохранение изображения в базу данных bob15 C# (си шарп) 1 03.06.2012 15:38
Просмотр изображения Artem Мультимедиа в Delphi 4 08.05.2012 18:58
Загрузка изображения в IB базу данных kitty19 Помощь студентам 2 13.11.2010 00:29
Загрузка blob в базу eldalex БД в Delphi 3 04.10.2010 14:01




02:46.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

Покупайте на сайте www.skinon.ru уникальные чехлы и наклейки для телефонов.
купить трафик


как улучшить посещаемость, а также решения по монетизации сайтов, видео и приложений

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru