本文共 2272 字,大约阅读时间需要 7 分钟。
参考:http://blog.chinaunix.net/uid-28194872-id-3516936.html
MySQL数据库要想插入图片,其字段需要是BLOB类型。
BLOB (binary large object),二进制大对象,是一个可以存储二进制文件的容器。在计算机中,BLOB常常是数据库中用来存储二进制文件的字段类型。
BLOB是一个大文件,典型的BLOB是一张图片或一个声音文件,由于它们的尺寸,必须使用特殊的方式来处理(例如:上传、下载或者存放到一个数据库)。
MySQL的四种BLOB类型
类型 大小(单位:字节)
TinyBlob 最大 255Blob 最大 65K
MediumBlob 最大 16M
LongBlob 最大 4G
选择图片文件:QString strImage = QFileDialog::getOpenFileName(this,"Please Select image file",
g_strCurrentDir,
"Image Format (*.png *.jpg *.bmp *.gif)");
if (strImage.isNull())
{
return;}
g_strCurrentDir = QDir(strImage).absolutePath();
ui->labelPic->setPixmap(QPixmap(strImage).scaled(ui->labelPic->size()));
//保存图片到数据库中:QByteArray bytes;QBuffer buffer(&bytes);
buffer.open(QIODevice::WriteOnly);
ui->labelPic->pixmap()->save(&buffer, "JPG");
QByteArray data;
QSqlQuery query;
QString path = strImage;QFile* file=new QFile(path); //fileName为二进制数据文件名
file->open(QIODevice::ReadOnly);
data = file->readAll();file->close();
Variant var(data);
QString sql = "insert into images(Image) values(?)";
query.prepare(sql);
query.addBindValue(var);
if(!query.exec())
{
qDebug()<<query.lastError().text().toLocal8Bit().data();
}
else
{
qDebug()<<"Insert success";
}}
//显示数据库里的图片 QSqlQuery q("SELECT * FROM images WHERE PicNum = 108"); while (q.next()) { if (q.isNull(0) == false) { QPixmap photo; ui->num->setText(q.value(0).toString()); photo.loadFromData(q.value(1).toByteArray(), "JPG"); ui->UserPicLabel->setPixmap(photo); qDebug()<<"Query success"; } else { qDebug()<<"Query failed"; } }//连接数据库#ifndef CONNECTION_H#define CONNECTION_H#include #include #include #include #include #include static bool createConnection(){ QSqlDatabase db =QSqlDatabase::addDatabase("QMYSQL"); db.setDatabaseName("test"); db.setHostName("172.17.54.133"); db.setPort(3306); db.setUserName("root"); db.setPassword("213517"); if(!db.open()) { QMessageBox::critical(0,qApp->tr("Cannot connect server"),qApp->tr("Unable to establish a database connection.\n"),QMessageBox::Cancel); return false; qDebug()<<"Connect MySql error!"; } return true;}#endif // CONNECTION_H注意:图片插入数据库和显示时其格式必须是和图片本身的格式对应的,不然不能显示。ex: photo.loadFromData(q.value(1).toByteArray(), "JPG");源码下载: 数据库下载:转载地址:http://phghx.baihongyu.com/