由與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;
}
}
運行結果以下:
說明數據庫已鏈接成功!!!
現貼出整個數據庫鏈接頭文件
有什麼問題能夠及時聯繫我