win7下 Qt5 链接 oracl 文章很多。但不适用与linux 下。
我的环境: centos 6.5 Qt5.4 oracl11g clinet
一。 编译驱动库文件libqsqloci.so
QT打开 /opt/Qt5.4.0/5.4/Src/qtbase/src/plugins/sqldrivers/oci (安装QT是要指定了src 才有此文件)
修改oci.pro 增加以下两句
INCLUDEPATH += /opt/oracle11g/sdk/include #oracl开发要用到的头文件
LIBPATH += /opt/oracle11g/ #oracl开发要用到的库文件
然后执行qmake 和build
注:编译完成后, 却在对应的目录下找不到生成的文件。看打印信息 却发现 跑到/plugins/sqldrivers/ 目录下去了,不知道为什
mv -f libqsqloci.so /plugins/sqldrivers/
将 libqsqloci.so 复制到/opt/Qt5.4.0/5.4/gcc_64/plugins/sqldrivers/ 目录下即可;
二: 测试
测试代码:
#include <QtCore/QCoreApplication>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QVariant>
#include <QDebug>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QSqlDatabase db = QSqlDatabase::addDatabase("QOCI");
db.setHostName("122.229.31.212");
db.setDatabaseName("WESOFT");
db.setUserName("ga");
db.setPassword("foxhis123");
db.setPort(11521);
if (db.open())
qDebug() << "打开成功/n";
else
qDebug() << "打开失败/n";
QSqlQuery query("SELECT column_1 FROM table_1");
while (query.next()) {
QString country = query.value(0).toString();
qDebug() << country.toLocal8Bit().data();
}
return a.exec();
}
追加 .pro 文件 QT += sql
输出:"打开成功/n";