Qt存储图片到数据库案例实现是本文要介绍的内容,主要是来学习QT数据库中图片的存储,以下是以Oracle 10G为开发平台运行的测试代码。
- //连接DB
- QSqlDatabase db = QSqlDatabase::addDatabase("QOCI");
- // QSqlDatabase db = QSqlDatabase::addDatabase("QODBC"); // cannot connect
- db.setHostName("192.168.0.123");
- db.setDatabaseName("ORCL");
- db.setUserName("testuser");
- db.setPassword("admin");
- db.setPort(1521);
- if (!db.open())
- {
- printf("打开失败n");
- }
- else
- {
- printf("打开成功n");
- QSqlQuery query;
- //do insert
- //blob
- QByteArray data;
- QString path = "F:/FtpSet/Ftp02/1111111111.JPG";
- QFile* file=new QFile(path); //fileName为二进制数据文件名
- file->open(QIODevice::ReadOnly);
- data = file->readAll();
- file->close();
- QVariant var(data);
- QString sql = "insert into qttest(id,field_blob) values(?,?)";
- query.prepare(sql);
- query.addBindValue(100);
- query.addBindValue(var);
- if(!query.exec())
- {
- printf("[insert error]");
- printf(query.lastError().text().toLocal8Bit().data());
- printf("n");
- }
- else
- {
- printf("[insert ok]n");
- }
还有一种获取BLOB数据入参的方法在Mysql中运行正常,Oracle中能运行,代码如下:
- QByteArray ba;
- QBuffer buffer(&ba);
- buffer.open(QIODevice::ReadWrite);
- QPixmap pixmap(path);
- pixmap.save(&buffer,"JPG");
- QVariant variant(ba);
小结:Qt存储图片到数据库案例实现的内容介绍完了,希望通过本文的学习能对你有所帮助!