qoci oracle 无监听 plsql正常,终于编译好了qt的oracle驱动QOCI,连接driver not loaded解决方法...

一文编译了QOCI,我目前遇到下面错误:(代码我直接用原文的)

QSqlDatabase: QOCI driver not loaded

QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL7

error_Oracle:

"Driver not loaded Driver not loaded"

解决这个问题就得从原理上说:

thin是纯java实现tcp/ip的c/s通讯;而oci方式,客户端通过native java method调用c library访问服务端,而这个c library就是oci(oracle called interface),因此这个oci总是需要随着oracle客户端安装(从oracle10.1.0开始,单独提供OCI Instant Client,不用再完整的安装client)

很多时候我们都考虑我们编译的$QTDIR/plugins/sqldrivers 下DLL 是否正确加载,而忽略Oracle那边的库是否加载。

那么问题解决方法就是

方法1、在系统Path 就是环境变量中添加 你的Oracle oci.dll库位置 C:\oracle\product\10.2.0\client_1\BIN。如果你正确安装Oracle客户端,就不应该存在这个问题。

方法2、有点土就是用QT自带 loadlibrary 自己加载oci.dll库位置。

我用的方法是1+2,已经测试无问题。

QLibrary *hello_lib = NULL;

//写清楚库的路径,如果放在当前工程的目录下,路径为./Oracle.so

hello_lib = newQLibrary("C:\\oracle\\product\\10.2.0\\client_1\\BIN\\oci.dll");

//加载动态库

hello_lib->load();

if(!hello_lib->isLoaded())

{

printf("load Oracle failed!\n");

return;

}

但要注意不管方法1或者方法2,Oracle 客户端是必须要装的,另外我不知道QT各版本编译出来的库是否通用,自己编译比较好。

WIN7 我还遇到一个问题:

QOCIDriver: unable to create environment

error_Oracle:

" Unable to logon"

这个你用PL/SQL应该遇到过

解决方法:

1、右键用 管理员身份账户 运行

2、程序路径不能有(),类似"C:\Program Files (x86)" 这样的路径无法登陆。我只知道10 是不行,不知道12改了没有。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值