欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

终于编译好了qt的oracle驱动QOCI,连接成功!!!

发布时间:2025/5/22 编程问答 39 豆豆
生活随笔 收集整理的这篇文章主要介绍了 终于编译好了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,连接成功!!!的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。