/* Time: 2017.01.02 —— 2017.01.04sql
* Author: WJ數據庫
* Function:鏈接數據庫,從數據庫中讀取圖片並顯示(已成功)ui
*/spa
【參考連接】.net
MySQL存入圖片+Qt讀入讀出數據庫中的圖片 - lpdpzc的專欄 - 博客頻道 - CSDN.NET http://blog.csdn.net/lpdpzc/article/details/419158353d
【主要代碼】blog
void MainWindow::on_ShowImage_clicked()圖片
{get
QSqlDatabase db ;博客
// 鏈接數據庫
if(QSqlDatabase::contains("qt_sql_default_connection"))
db = QSqlDatabase::database("qt_sql_default_connection");
else
{
db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("localhost");
db.setDatabaseName("sfood");
db.setUserName("root");
db.setPassword("123456");
}
if(! db.open())
{
qDebug()<<"Fail to Opened!";
}
else
{
qDebug()<<"DataBase Opened!";
//創建查詢
QSqlQuery query;
query.exec("SELECT * FROM sfood"); //查詢未成功
if (! query.exec("SELECT * FROM sfood"))
{
qDebug()<<" Fail to Selecte !";
}
else
{
qDebug()<<" Selected Success!";
QPixmap photo;
qDebug()<<"顯示圖片";
if(query.first())
{
photo.loadFromData(query.value(5).toByteArray(), "JPG"); //從數據庫中讀出圖片爲二進制數據,圖片格式爲JPG,而後顯示到QLabel裏
}
ui->label->setPixmap(photo);
ui->label->setScaledContents(true);
}
}
}
【結果】
從數據庫中讀取其餘信息:菜名、價格
【代碼】
if(query.first())
{
QString str1 = query.value(1).toString();
ui->lineEdit->setText(str1); // 菜名
price = query.value(4).toInt();
ui->lineEdit_2->setText(QString::number(price)); // 價格
photo.loadFromData(query.value(6).toByteArray(), "JPG");
//從數據庫中讀出圖片爲二進制數據,圖片格式爲JPG,而後顯示到QLabel裏
}
【結果】
【思考】 query.first() 與 query.next() 的區別?
query.first() 圖片顯示正常
query.next() 圖片沒法顯示