qt鏈接oracle數據庫

由與qt開源版本沒有提供oracle數據庫驅動,須要本身根據源代碼來手動編譯oracle驅動。程序員

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

ps:期間通過各類失敗疼苦迷茫。如今終於完成,心情也開闊些。程序員強迫症的疼苦。閒言少敘。接下來將一步一步,描述個人實現過程數據庫

1、工具準備windows

一、qt-opensource-windows-x86-msvc2015_64-5.8.0.exe這個是我是用的qtSDK及裏面包含的atcreatororacle

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

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

2、編譯生成oracle驅動網站

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

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

 

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

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

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

在右擊qmake項目發現成功

二、右擊構建項目

出現以上問題。這是須要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驅動文件。

3、使用驅動鏈接數據庫

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

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

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

 

 4、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;
    }
}
運行結果以下:

 

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

 

有什麼問題能夠及時聯繫我
相關文章
相關標籤/搜索