使用数据库中的图片

  1. //连接DB  
  2. QSqlDatabase db = QSqlDatabase::addDatabase("QOCI");  
  3. // QSqlDatabase db = QSqlDatabase::addDatabase("QODBC"); // cannot connect  
  4. db.setHostName("192.168.0.123");  
  5. db.setDatabaseName("ORCL");  
  6. db.setUserName("testuser");  
  7. db.setPassword("admin");  
  8. db.setPort(1521);  
  9.  
  10. if (!db.open())  
  11. {  
  12. printf("打开失败n");  
  13. }  
  14. else  
  15. {  
  16. printf("打开成功n");  
  17.  
  18. QSqlQuery query;  
  19.  
  20. //do insert  
  21.  
  22. //blob  
  23. QByteArray data;  
  24. QString path = "F:/FtpSet/Ftp02/1111111111.JPG";  
  25. QFile* file=new QFile(path); //fileName为二进制数据文件名  
  26. file->open(QIODevice::ReadOnly);  
  27. data = file->readAll();  
  28. file->close();  
  29. QVariant var(data);  
  30.  
  31. QString sql = "insert into qttest(id,field_blob) values(?,?)";  
  32. query.prepare(sql);  
  33. query.addBindValue(100);  
  34. query.addBindValue(var);  
  35. if(!query.exec())  
  36. {  
  37. printf("[insert error]");  
  38. printf(query.lastError().text().toLocal8Bit().data());  
  39. printf("n");  
  40. }  
  41. else  
  42. {  
  43. printf("[insert ok]n");  

还有一种获取BLOB数据入参的方法在Mysql中运行正常,Oracle中能运行,代码如下:

  1. QByteArray ba;  
  2. QBuffer buffer(&ba);  
  3. buffer.open(QIODevice::ReadWrite);  
  4. QPixmap pixmap(path);  
  5. pixmap.save(&buffer,"JPG");  
  6. QVariant variant(ba); 

你可能感兴趣的:(数据库)