本人是刚接触oracle数据库,同事在他自己电脑上搭的oracle服务器环境,我和组长想要通过QT编译的程序远程访问oracle服务器出现了问题。
网上找了一天,关于编译oracle数据库OCI驱动的编译方法都是一个版本的,都是在安装了本地安装了oracle服务器的情况下对OCI进行编译。
且不论OCI的使用,先谈一下OCI驱动的编译问题。
1、首先必须安装oracle数据库服务端or客户端,或者从oracle服务器安装文件夹拷贝头文件夹和库文件夹以及可执行文件
$ORACLEDIR\product\10.2.0\db_1\OCI\include
$ORACLEDIR\product\10.2.0\db_1\OCI\lib\MSVC\oci.lib
$ORACLEDIR\product\10.2.0\db_1\BIN
其中$ORACLEDIR为oracle服务器或客户端的安装路径。
2、找到QT源码中的OCI工程文件并打开,.pro路径如下
$QTDIR\src\plugins\sqldrivers\oci
打开OCI项目的oci.pro文件内容如下图
在其中添加拷贝的oracle的文件夹目标路径。
我直接拷贝OCI文件夹和BIN文件夹到E:盘下的Oracle目录。强调:所有库和头文件的目录不要带中文字符或者空格,否则包涵库文件夹的时候路径会有问题。
3、按本机电脑上的编译器的配置配置项目,选择构建配置生成debug/release版本,选择Qt版本使用相应的编译器编译,其中MSVC编译的库为.dll和.lib文件,mingw编译的库为.a和.so。
编译完成后,将构建目录下的相应库文件拷贝到
$QTDIR\plugins\sqldrivers
完成以上步骤即表示OCI驱动已经编译完成了。
接下来是OCI数据库的使用。。。。。。这个是组长晚上查到的
将拷贝的BIN文件夹中的oci.dll拷贝到C:\Windows\System32目录下即可
#include
#include
#include
#include
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QStringList drivers=QSqlDatabase::drivers();
foreach(QString driver,drivers)
{
qDebug()<
可以通过上面的代码测试加载了哪些数据库插件。
如果想要更详细的信息,可以在项目/运行设置/运行时环境变量中添加QT_DEBUG_PLUGINS=1,这样运行的时候会输出更详细的信息
参见利用QT_DEBUG_PLUGINS检查Qt的插件问题
为了写这个博客,我有查了些资料,结果碰到让我最纠结的问题,原来这些资料在QT Assistant中都有,点击查找OCI Plugin on Windows,神那,求解脱,早知道直接找QT 帮助了
好吧,客户端还是要装一个的,记得把客户端的bin路径添加到环境变量亲