一:代码
二:连接过程遇到的问题。
问题1:
QSqlDatabase: QOCI driver not loaded
QSqlDatabase:available drivers: QSQLITE QODBC3 QODBC(1)出错原因:本连接是通过QMYSQL驱动,而Qt本身并没有QOCI驱动(只有QSQLITE QODBC3 QODBC),
所以就需要自己编译QOCI。
(2)编译QOCI驱动。
1.go to "Qt Command Prompt" window. (开始-程序-对应的qt项里面去找)。
2.qmake "INCLUDEPATH+=c:\oracle\oci\include" "LIBS+=-Lc:\oracle\oci\lib\msvc" oci.pro
3.qmake "INCLUDEPATH+=D:\oracle_setup\app\admin\product\11.1.0\db_3\OCI\include" "LIBS+=-LD:\oracle_setup\app\admin\product\11.1.0\db_3\OCI\lib\msvc" oci.pro
4.mingw32-make
问题2:
出现错误:
D:\qt_sdk\qt\src\plugins\sqldrivers\oci>mingw32-make
mingw32-make -f Makefile.Debug all
mingw32-make[1]: Entering directory `D:/qt_sdk/qt/src/plugins/sqldrivers/oci'
mingw32-make[1]: Nothing to be done for `all'.
mingw32-make[1]: Leaving directory `D:/qt_sdk/qt/src/plugins/sqldrivers/oci'
mingw32-make -f Makefile.Release all
mingw32-make[1]: Entering directory `D:/qt_sdk/qt/src/plugins/sqldrivers/oci'
mingw32-make[1]: Nothing to be done for `all'.
mingw32-make[1]: Leaving directory `D:/qt_sdk/qt/src/plugins/sqldrivers/oci'
出错原因:这个问题表示QOCI驱动已经被编译过了!!!
问题3:
"ORA-12541: TNS: 无监听程序
Unable to logon"
(1)原因:服务里边的OracleOraDb11g_home3TNSListenener未启动。
(2)解决:启动OracleOraDb11g_home3TNSListenener.
问题4:
服务里边的OracleOraDb11g_home3TNSListenener启动后总是自己关闭,导致一直无法监听
(1)原因:因为昨天关机之前我改了主机名。
(2)解决:打开listener.ora内容:
将(ADDRESS = (PROTOCOL = TCP)(HOST = 原主机名)(PORT = 1521))
改为:(ADDRESS = (PROTOCOL = TCP)(HOST = 新主机名)(PORT = 1521))
ok啦!/
再启动服务。
启动tnslsnr,成功啦!
问题5:
"ORA-12505: TNS: 监听程序当前无法识别连接描述符中所给出的 SID
Unable to logon"
解决:打开tnsnames.ora内容:
将(ADDRESS = (PROTOCOL = TCP)(HOST = 原主机名)(PORT = 1521))
改为:(ADDRESS = (PROTOCOL = TCP)(HOST = 新主机名)(PORT = 1521))
ok啦
问题6:
安装Oracle数据库时报错:ORA-28056: Writing audit records to Windows Event Log failed安装Oracle数据库时报错:ORA-28056: Writing audit records to Windows Event Log failed
解决办法:
1、打开windows 事件查看器
2、在左侧应用程序上点击右键,打开属性。
3、当达到最大文件时,选择按需要改写事件;同时点击清除日志按钮。
4、点击确定。
5、重新运行database configuration assistant,配置数据库。
问题7:
ORA-12560: TNS: 协议适配器错误
3个原因,找到对应的解决问题:
1.监听服务没有起起来。windows平台个一如下操作:开始---程序---管理工具---服务,打开服务面板,启动oraclehome92TNSlistener服务。
2.database instance没有起起来。windows平台如下操作:开始---程序---管理工具---服务,打开服务面板,启动oracleserviceXXXX,XXXX就是你的database SID.
3.注册表问题。regedit,然后进入HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0将该环境变量ORACLE_SID设置为XXXX,XXXX就是你的database SID.或者右几我的电脑,属性--高级--环境变量---系统变量--新建,变量名=oracle_sid,变量值=XXXX,XXXX就是你的database SID.或者进入sqlplus前,在command line下输set oracle_sid=XXXX,XXXX就是你的database SID.
经过以上步骤,就可以解决问题
三:远程连接
(1)建一个sqldrivers文件夹,将oraociei11.dll放进去。
(2)到工程的exe文件同目录下,把sqldrivers文件夹和oci.dll放进去。
(3)将整个程序发到客户端。