Qt远程连接Oracle数据库


一:代码

  1. /**连接Oracle数据库 
  2.   *数据库名:abc 
  3.   *表名:my_oracle 
  4.   *用户名:system 
  5.   *密码:123 
  6.   *端口号:(默认)1521 
  7. */ 
  8. void MainDialog::connectOracle(QString sIp, int iPort,  QString sDbNm, QString SUSErNm, QString sPwd) 
  9.     db = QSqlDatabase::addDatabase("QOCI"); 
  10.     db.setHostName(sIp); 
  11.     db.setPort(iPort); 
  12.     db.setDatabaseName(sDbNm); 
  13.     db.setUserName(sUserNm); 
  14.     db.setPassword(sPwd); 
  15.     if (db.open()) 
  16.     { 
  17.         QMessageBox::information(this, tr("提示"), tr("Oracle数据库连接成功!"), tr("确定")); 
  18.     } 
  19.     else 
  20.     { 
  21.         QMessageBox::information(this, tr("提示"), tr("Oracle数据库连接失败!"), tr("确定")); 
  22.         qDebug() <<"error_Oracle:\n" << db.lastError().text(); 
  23.     } 

二:连接过程遇到的问题。

问题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驱动已经被编译过了!

  • 1
  • 2
  • 下一页

相关内容