天天看點

Qt存儲圖檔到資料庫案例實作

原文位址::https://blog.csdn.net/memory_exception/article/details/74504121?utm_medium=distribute.pc_relevant.none-task-blog-title-1&spm=1001.2101.3001.4242

相關文章

1、qt之資料庫對照片的存取----https://www.cnblogs.com/that-boy-done/p/10777054.html

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存儲圖檔到資料庫案例實作的内容介紹完了,希望通過本文的學習能對你有所幫助!