这么多天以来终于有件事可以小舒畅了一下了。
今天终于编译好了qt的oracle驱动QOCI,连接成功!!!
Qt Commercial版只自带了SQLLite和ODBC的驱动,oracle的驱动要自己编译,折腾了许久,终于成功了。具体如下:
编译QOCI:
1st :
go to Qt’s Command Prompt window. (VS 2008 下 )
2nd :
set INCLUDE=%INCLUDE%;D:\Work\Oracle_10.2_client\oci\include
3rd :
set LIB=%LIB%;D:\Work\Oracle_10.2_client\oci\lib\msvc
4th :
cd %QTDIR%\src\plugins\sqldrivers\oci
5th :
qmake -o Makefile oci.pro
6th :
nmake
连接数据库:
#include
以前一直显示
QSqlDatabase: QOCI driver not loaded
QSqlDatabase: available drivers: QSQLITE QODBC3 QODBC
打开失败
QSqlQuery::exec: database not open
Cheers!
顺带记录下Solaris10下的编译方法(没试过)
Oracle的环境变量:
ORACLE_BASE=/oracle
ORACLE_HOME=$ORACLE_BASE/product/10.0.2
Qt的编译文件在Solaris 10下的路径:
/export/home/qt-4.3.1/qt-X11-commercial-src-4.3.1
Qt的环境变量:
QTDIR=/usr/local/Trolltech/Qt-4.3.1
Show下环境变量:
ORACLE_BASE=/oracle
ORACLE_HOME=$ORACLE_BASE/product/10.0.2
export ORALCE_BASE ORACLE_HOMEQTDIR=/usr/local/Trolltech/Qt-4.3.1
PATH=$QTDIR/bin:$ORACLE_HOME/bin:$PATH
LD_LIBRARY_PATH=$QTDIR/lib:/usr/openwin/sfw/lib:$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export QTDIR PATH LD_LIBRARY_PATH
OK!开始在Solaris 10下Qt编译Oracle 10g驱动,Oracle 10g是服务端!
cd /export/home/qt-4.3.1/qt-X11-commercial-src-4.3.1/src/plugins/sqldrivers/oci
qmake -o Makefile "INCLUDEPATH+=$ORACLE_HOME/rdbms/public $ORACLE_HOME/rdbms/demo" "LIBS+=-L$ORACLE_HOME/lib -lclntsh" oci.pro
gmake
gmake install
这样你就能在 $QTDIR/plugins/sqldrivers 中找到 libqsqloci.so 数据库的驱动了~~
在用的程序中的pro文件中需要如下设置:
QT += sql
测试一下吧~
QStringList drivers = QSqlDatabase::drivers();
foreach(QString driver, drivers)
qDebug() << "\t" << driver;
你会惊喜的发现,QOCI8和QOCI的出现!
最后墨迹一句,在configure的时候编译如下:
configure -plugin-sql-oic -I/$ORACLE_HOME/rdbms/public -I/$ORACLE_HOME/rdbms/demo -L$ORACLE_HOME/lib