• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

终于编译好了qt的oracle驱动QOCI,连接driver not loaded解决方法

mysql 搞代码 4年前 (2022-01-09) 21次浏览 已收录 0个评论

我想你和我一样,照着终于编译好了qt的oracle驱动QOCI,连接成功!!! 一文编译了QOCI,我目前遇到下面错误:(代码我直接用原文的) QSqlDatabase: QOCI driver not loadedQSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL7e

我想你和我一样,照着终于编译好了qt的oracle驱动QOCI,连接成功!!!

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

QSqlDatabase: QOCI driver not loadedQSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL7error_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。如果你

本文来源gao!%daima.com搞$代*!码网1

正确安装Oracle客户端,就不应该存在这个问题。

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

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

    QLibrary *hello_lib = NULL;    //写清楚库的路径,如果放在当前工程的目录下,路径为./Oracle.so    hello_lib = new QLibrary("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 environmenterror_Oracle: " Unable to logon"

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

 解决方法:

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

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


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:终于编译好了qt的oracle驱动QOCI,连接driver not loaded解决方法

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址