qt連接oracle數據庫


由與qt開源版本沒有提供oracle數據庫驅動,需要自己根據源代碼來手動編譯oracle驅動。

經過近三天的折騰,終於成功編譯oracle驅動,連接到數據庫

ps:期間經過各種失敗疼苦迷茫。現在終於完成,心情也開闊些。程序員強迫症的疼苦。閑言少敘。接下來將一步一步,描述我的實現過程

一、工具准備

1、qt-opensource-windows-x86-msvc2015_64-5.8.0.exe這個是我是用的qtSDK及里面包含的atcreator

2、在安裝的過程中切記把 src選項勾上,默認是不選的。

3、ORA+11+G+R2+server+64bit+for+windows.iso這是我使用的oracle數據庫

二、編譯生成oracle驅動

1、使用qtcreate打開下面目錄的項目C:\Qt\Qt5.8.0\5.8\Src\qtbase\src\plugins\sqldrivers\oci每個人安裝路徑可能不一樣,可根據自己的情況相應更改

需要強調的是在安裝qt-opensource-windows-x86-msvc2015_64-5.8.0.exe需要勾選src選項。才能有相應的src目錄

 

打開后直接執行qmake。發現如上面出現的錯誤。這個問題曾糾結了我一天多。最終在某國外網站找到了解決方法(曾一度想放棄了)

解決方法:打開oci.pro文件

如花圈里面所示。把原來上面那句去掉,添加下面那句即QMAKE_LFLAGS += oci.lib

在右擊qmake項目發現成功

2、右擊構建項目

出現以上問題。這是需要include Oracle相關的頭文件

打開工程文件添加

INCLUDEPATH += D:\app\Administrator\product\11.2.0\dbhome_1\OCI\include

注意相應的目錄根據你自己oracle安裝目錄而定,但是目錄后半部分都是一樣的如\product\11.2.0\dbhome_1\OCI\include

這樣就把相關的頭文件包進該工程里了

接着構建項目,發現如下錯誤

解決方法:上面只抱進的相應的頭文件,還應該把相關的lib文件包含進來

打開工程文件,添加:LIBS += D:\app\Administrator\product\11.2.0\dbhome_1\OCI\lib\MSVC\oci.lib,如下圖

如果仍然找不到oci.lib可以使用這種添加形式:LIBPATH += D:\app\Administrator\product\11.2.0\dbhome_1\OCI\lib\MSVC

 

 

 清除項目 ->執行qmake->重新構建

沒有錯誤出現了,僅僅是幾個類型轉換的警告。

表明已經生成成功。oracle相關驅動一生成成功

打開文件C:\plugins\sqldrivers

果然已經生成相應的dll lib驅動文件。

三、使用驅動連接數據庫

把上面目錄顯得qsqloci.dll(release版本)、qsqlocid.dll(debug版本)文件考到目錄

C:\Qt\Qt5.8.0\5.8\msvc2015_64\plugins\sqldrivers

ps:目錄根據具體安裝而定,但后面部分都是一樣的,別考錯了

 

 四、qt編寫代碼連接oracle數據庫

注意在連接數據庫的項目文件里添加QT += sql

 

 static bool createConnection()

{
    QSqlDatabase db = QSqlDatabase::addDatabase("QOCI");//QOCI
    db.setPort(1521);
    db.setHostName("127.0.0.1");
    db.setDatabaseName("orcl");
    db.setUserName("test");
    db.setPassword("456123");
    if (!db.open()) {
        QMessageBox::critical(0, "Cannot open database",
            "Unable to establish a database connection.", QMessageBox::Cancel);
        return false;
    }
    else{
        QMessageBox::critical(0,"congratulation!","oracle database connnect successfuly!!!",QMessageBox::Ok);
        return true;
    }
}
運行結果如下:

 

 
        
說明數據庫已連接成功!!!
現貼出整個數據庫連接頭文件

 

有什么問題可以及時聯系我


免責聲明!

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



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