qt之數據庫對照片的存取


需要確保數據庫連接上 QOCI為驅動

//oracle 數據庫連接 //需要在執行文件目錄添加 oci.dll oraociei11.dll

    QSqlDatabase db = QSqlDatabase::addDatabase("QOCI");
    db.setHostName("192.3.8.105");//數據庫主機
    db.setPort(1521);
    db.setDatabaseName("ORCL");//數據庫服務名
    db.setUserName("RWGH");//數據庫用戶名
    db.setPassword("rwgh");//密碼
    bool ok = db.open();
    qDebug()<<ok;
    if(1)
    {
        //將照片以二進制流的方式存到數據庫
        QPixmap pixmap("./image/test.png");
        QByteArray byteArray = QByteArray();
        QBuffer buffer(&byteArray);
        buffer.open(QIODevice::WriteOnly);
        pixmap.save(&buffer,"png",0);
 
        
        QString str = QString("22");//圖片ID
        //插入數據庫 TEST_PIC為數據庫表明  CONTENT為存儲照片字段 為Blob類型
        QString strQSL = QString("insert into TEST_PIC(ID,CONTENT) values('%1',?)").arg(str);
 
        
        QSqlQuery query;
        query.prepare(strQSL);
        query.addBindValue(byteArray);
        query.exec();
    }
    if(1)
    {
        //從數據庫讀取照片
        QByteArray byteText;
        QString strsql = QString("select CONTENT,ID from TEST_PIC");
        QSqlQuery query;
        query.exec(strsql);
 
        
        while (query.next()) {
            byteText = query.value(0).toByteArray();
            QString id = query.value(1).toString();
            QPixmap pix;
            pix.loadFromData(byteText,"png");
            pix.save(QString("./test2.png"));//保存從數據庫讀取的照片到本地
        }
    }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM