这么多天以来终于有件事可以小舒畅了一下了。
今天终于编译好了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
#include
#include
#include
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");
else
printf("打开失败\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/p