前言:
当前小伙伴们对“qtpodbcoracle”大概比较讲究,兄弟们都想要分析一些“qtpodbcoracle”的相关内容。那么小编在网络上网罗了一些对于“qtpodbcoracle””的相关文章,希望同学们能喜欢,兄弟们快快来学习一下吧!注意点:
这里以64位为例子,oracle 11的版本和编译驱动的编译器都选择64位。如果你要32位驱动做对应的选择。
安装oracle 11客户端完整版本
安装QT,组件的选择如下:修改项目工程文件,编译代码
修改oci.pro文件
文件路径 D:\alantop_sde\Qt\5.12.5\Src\qtbase\src\plugins\sqldrivers\oci
文件名 oci.pro
如下图部分修改:
注释掉一行,增加三行#QMAKE_USE += ociQMAKE_LFLAGS += D:/oracle11g/product/11.2.0/client_1\BIN/oci.dllINCLUDEPATH += D:/oracle11g/product/11.2.0/client_1/oci/includeLIBPATH += D:/oracle11g/product/11.2.0/client_1/oci/lib/msvc
修改qsqldriverbase.pri 注释如下行
编译时出现错误,代码部分的修改
修改2个地方 修改源码 qsql_oci.cpp 1559行
1. 修改函数名称 OCIBindByPos2改为OCIBindByPos
2. 把bindColum.lengths 变量做指针转换 reinterpret_cast<ub2*>(bindColumn.lengths),
编译会出现如下警告,不影响生成的dll文件。
修改后编译后,在 D:\plugins\sqldrivers 目录下生成如下驱动文件把qt oracle oci库 拷贝到指定目录下
把oci.dll,oci.lib添加到QT bin目录下(如:D:\alantop_dir\alantop_ide\Qt\Qt5.12.9\5.12.9\mingw73_64\bin),(如果不够把oci.dll下所有文件拷贝到这里)
把上图生成的4个文件拷贝sqldrivers目录下(如:D:\alantop_dir\alantop_ide\Qt\Qt5.12.9\5.12.9\mingw73_64\plugins\sqldrivers)
上图的四个文件拷贝到你写的项目目录下和exe一起。
使用oracle驱动
在pro文件增加如下行
QT += sql
测试代码如下
#include <QCoreApplication>#include <QSqlDatabase>#include <QtGlobal>#include <QtDebug>#include <QSqlError>#include <QSqlQuery>#include <QSqlRecord>#include <QSqlField>int main(){ qDebug()<<"Available drivers:"; 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()<<("TableName的字段个数:")<<rec.count(); QSqlField filed = rec.field(0); qDebug()<<("字段名称:")<<rec.field(0).name()<<("字段类型:")<<rec.field(0).type()<<("字段值:")<<rec.field(0).value(); qDebug()<<("段名称:")<<rec.field(1).name()<<("字段类型:")<<rec.field(1).type()<<("字段值:")<<rec.field(1).value(); qDebug()<<("字段名称:")<<rec.field(2).name()<<("字段类型:")<<rec.field(2).type()<<("字段值:")<<rec.field(2).value(); qDebug()<<("字段名称:")<<rec.field(3).name()<<("字段类型:")<<rec.field(3).type()<<("字段值:")<<rec.field(3).value(); } else { //qDebug()<<tr("error"); } } }
标签: #qtpodbcoracle #java oracle驱动 #oracle编译视图 #oracle11驱动安装 #oracle11g驱动