abcdlcq的个人主页

http://www.qtcn.org/bbs/u/118073  [收藏] [复制]

abcdlcq

  • 13

    关注

  • 15

    粉丝

  • 38

    访客

  • 等级:新手上路
  • 总积分:83
  • 男,1984-01-01

最后登录:2017-09-29

更多资料

日志

编译Oracle数据库驱动【转】

2011-08-30 08:47

本文转自http://blog.csdn.net/fm0517/article/details/4587762


这么多天以来终于有件事可以小舒畅了一下了。
今天终于编译好了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

连接数据库:


view plain
  1. #include <QtCore/QCoreApplication>  
  2. #include <QSqlDatabase>  
  3. #include <QSqlQuery>  
  4. #include <QVariant>  
  5. int main(int argc, char *argv[])  
  6. {  
  7.     QCoreApplication a(argc, argv);  
  8. ////////////////////////////////////////////////////  
  9.     QSqlDatabase db = QSqlDatabase::addDatabase("QOCI");  
  10.     db.setHostName("192.168.0.192");  
  11.     db.setDatabaseName("dbname");  
  12.     db.setUserName("username");  
  13.     db.setPassword("passwd");  
  14.     db.setPort(1521);  
  15.     if (db.open())  
  16.         printf("打开成功/n");  
  17.     else  
  18.         printf("打开失败/n");  
  19. ////////////////////////////////////////////////////  
  20.     QSqlQuery query("SELECT column_1 FROM table_1");  
  21.     while (query.next()) {  
  22.         QString country = query.value(0).toString();  
  23.         printf("%s/n",country.toLocal8Bit().data());  
  24.     }  
  25. ////////////////////////////////////////////////////  
  26.     return a.exec();  
  27. }  

以前一直显示
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
分类:默认分类|回复:0|浏览:1853|全站可见|转载
 

Powered by phpwind v8.7 Certificate Copyright Time now is:05-06 11:37
©2005-2016 QTCN开发网 版权所有 Gzip disabled