问题
最近在用qt写程序需要连接远程oracle数据库,记录下遇到的关于Driver not loaded的问题。
环境
首先说下我用的qt版本5.14.2,MinGW 7.3.0 32-bit。
问题解决
第一步:首先确保你有QOCI这个驱动。
可以用QSqlDatabase::drivers()查看下,现在是否有QOCI这个驱动,如果之前没有添加过,应该是没有的。需要自己添加QOCI驱动。
怎么给QT添加QOCI驱动
网上有很多编译QOCI驱动的帖子,可以自己找一下。这里记得最好自己编译一下,因为如果你用不同版本的QT编译出来的QOCI驱动,虽然用这个函数QSqlDatabase::drivers()可能会显示支持QOCI,但实际运行时还是会有Driver not loaded。所以最好自己编译。
第二步:添加一些文件到你的程序EXE所在文件目录
我这里的情况是,程序运行的那个电脑环境没有ORACLE数据库客户端,所以我添加了一些oracle数据库相关的动态链接库到EXE程序所在的目录下面。如果你跟我的情况一样,没有oracle客户端,不添加的话应该还是会报Drive not loaded这个问题。
下面是我添加的相关文件,你可以下载个oracle客户端,找到这几个文件。我用的是oracle 11g。
(可能只需要这7个的其中某几个就行,但我没具体试过,就都添加了。我知道oci和oraociei11这两个是必须的)
上面两步都完成了,Drive not loaded问题就解决了。