qt 5.12.5 访问 oracle11g R2 数据库

先编译qt 5.12.5 编译 oracle11g R2 驱动(需要修改源码2个地方)

1.下载安装oracle客户端 oracle11g R2 64位

·

2.安装qt 5.12

qt 5.12.5 访问 oracle11g R2 数据库

·

3..修改oci.pro文件

文件路径 D:\\alantop_sde\\Qt\\5.12.5\\Src\\qtbase\\src\\plugins\\sqldrivers\\oci

打开 oci.pro

注释掉一行,增加三行

<code>#QMAKE_USE += oci
QMAKE_LFLAGS += D:/oracle11g/product/11.2.0/client_1\\BIN/oci.dll
INCLUDEPATH += D:/oracle11g/product/11.2.0/client_1/oci/include
LIBPATH += D:/oracle11g/product/11.2.0/client_1/oci/lib/msvc/<code>

操作系统,数据库,编译器软件都选择64位 使用MinGw64

编译出现错误,修改源码

修改2个地方 修改源码 qsql_oci.cpp 1599行

1. 修改函数名称 OCIBindByPos2改为OCIBindByPos

2. 把bindColum.lengths 变量做指针转换 reinterpret_cast(bindColumn.lengths),


修改后编译后,在 D:\\plugins\\sqldrivers 目录下生成驱动

qt 5.12.5 访问 oracle11g R2 数据库


4.建立qt oracle oci库 这个库需要拷贝到工程目录下

.pro文件增加

<code>QT += sql/<code>
<code>#include <qcoreapplication>

#include <qsqldatabase>

#include <qtglobal>

#include <qtdebug>

#include <qsqlerror>

#include <qsqlquery>

#include <qsqlrecord>

#include <qsqlfield>


int main()

{

qDebug()<


QStringList drivers=QSqlDatabase::drivers();



foreach(QString driver,drivers)



qDebug()<<driver>

QSqlDatabase db = QSqlDatabase::addDatabase("QOCI");


qDebug() << "QT DB driver?" << db.isValid();


bool m_bIsConn;


db.setHostName("10.2.3.102");

db.setPort(1521);

db.setDatabaseName("");

db.setUserName("");

db.setPassword("");

if(db.open())

{

qDebug()<<qstring>
m_bIsConn = true;

}

else

{

qDebug()<
m_bIsConn = false;

qDebug()<<db.lasterror>
}


QSqlQuery query("SELECT * FROM tables");

while (query.next())

{

int iProNo = query.value(0).toInt();

QString sProName = query.value(1).toString();

qDebug()<< sProName;


}




if(m_bIsConn)

{

QSqlQuery query;

bool bSuccess = query.exec("select * from tables");

if(bSuccess)

{

QSqlRecord rec = query.record();

qDebug()<
QSqlField filed = rec.field(0);

qDebug()<
qDebug()<
qDebug()<
qDebug()<
}

else

{

//qDebug()<
}

}




}
"/<db.lasterror>/<qstring>/<driver>/<qsqlfield>/<qsqlrecord>/<qsqlquery>/<qsqlerror>/<qtdebug>/<qtglobal>/<qsqldatabase>/<qcoreapplication>/<code>


分享到:


相關文章: