终于编译好了qt的oracle驱动QOCI,连接成功!!!
這么多天以來終于有件事可以小舒暢了一下了。
今天終于編譯好了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 <QtCore/QCoreApplication> #include <QSqlDatabase> #include <QSqlQuery> #include <QVariant> int main(int argc, char *argv[]) {QCoreApplication a(argc, argv);QSqlDatabase db = QSqlDatabase::addDatabase("QOCI");db.setHostName("192.168.0.192");db.setDatabaseName("dbname");db.setUserName("username");db.setPassword("passwd");db.setPort(1521);if (db.open())printf("打開成功/n");elseprintf("打開失敗/n");QSqlQuery query("SELECT column_1 FROM table_1");while (query.next()) {QString country = query.value(0).toString();printf("%s/n",country.toLocal8Bit().data());}return a.exec(); }
以前一直顯示
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_HOME
QTDIR=/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
?
總結
以上是生活随笔為你收集整理的终于编译好了qt的oracle驱动QOCI,连接成功!!!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 信用卡安全码可以抠掉吗
- 下一篇: Qt读写注册表和ini文件