刚开始用QT,需要与ORACLE链结,可是QT没有自带ORACLE的驱动,需要自己编译。网上查了很久也没弄出来,感觉大家写的都比较简单,几经周折终于编译成功,和大家分享一下,希望会对像我这样刚接触QT和ORACLE的同学带来帮助。
因为没有驱动所以报错一直是
QSqlDatabase: QOCI driver not loaded
首先可以参考这篇文章设置环境变量等http://wenku.baidu.com/link?url=ccunEGgWOHyJu9tI-vK_wuYjhEC34GG0aWoRLjTuSWSs5I568JyH-Ug80qt66Sc-9bws6TT2PwXzgiD9_Tdke38A0BG8v3JVFcth_GxZljO
记住打开oci.pro之后在.pro文件中添加(我的oracle装在F盘)
INCLUDEPATH += F:\oracle\product\10.2.0\db_1\OCI\include
LIBPATH += F:\oracle\product\10.2.0\db_1\OCI\lib\MSVC
然后运行,我的是出现下面的代码
Starting C:\Qt\Qt5.2.1\Tools\mingw48_32\bin\mingw32-make.exe...
C:/Qt/Qt5.2.1/Tools/mingw48_32/bin/mingw32-make -f Makefile.Debug all
mingw32-make[1]: Entering directory 'C:/Qt/Qt5.2.1/5.2.1/Src/qtbase/src/plugins/sqldrivers/build-oci-Desktop_Qt_5_2_1_MinGW_32bit-Debug'
mingw32-make[1]: Nothing to be done for 'all'.
mingw32-make[1]: Leaving directory 'C:/Qt/Qt5.2.1/5.2.1/Src/qtbase/src/plugins/sqldrivers/build-oci-Desktop_Qt_5_2_1_MinGW_32bit-Debug'
C:/Qt/Qt5.2.1/Tools/mingw48_32/bin/mingw32-make -f Makefile.Release all
mingw32-make[1]: Entering directory 'C:/Qt/Qt5.2.1/5.2.1/Src/qtbase/src/plugins/sqldrivers/build-oci-Desktop_Qt_5_2_1_MinGW_32bit-Debug'
mingw32-make[1]: Nothing to be done for 'all'.
mingw32-make[1]: Leaving directory 'C:/Qt/Qt5.2.1/5.2.1/Src/qtbase/src/plugins/sqldrivers/build-oci-Desktop_Qt_5_2_1_MinGW_32bit-Debug'
C:\Qt\Qt5.2.1\Tools\mingw48_32\bin\mingw32-make.exe exited with code 0
这时编译好的文件会出现在C盘根目录plugins文件夹下,分别为libqsqloci.a,libqsqlocid.a,qsqloci.dll,qsqlocid.dll四个文件,然后把他们复制到C:\Qt\Qt5.2.1\5.2.1\mingw48_32\plugins\sqldrivers(我用的QT是5.2.1,ORACLE是10G,网上大部分不是5.2.1版本,所以路径什么的大家自己找一下,不要弄错了)
我用下面的代码测试,表明链接成功
int main(int argc, char *argv[])
{ //连接数据库
QSqlDatabase db = QSqlDatabase::addDatabase("QOCI");
db.setHostName("XZ-20131019YFCP");
db.setDatabaseName("orcl");
db.setUserName("system");
db.setPassword("gaowei553151883");
if (db.open()) {qDebug()<< "链接远程数据库成功";}
else{qDebug()<< "链接远程数据库失败";
};
}
祝大家成功~