1. 程式人生 > >Qt遠端連線Oracle資料庫

Qt遠端連線Oracle資料庫

一:程式碼

[cpp] view plaincopyprint?
  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. {  
  10.     db = QSqlDatabase::addDatabase("QOCI");  
  11.     db.setHostName(sIp);  
  12.     db.setPort(iPort);  
  13.     db.setDatabaseName(sDbNm);  
  14.     db.setUserName(sUserNm);  
  15.     db.setPassword(sPwd);  
  16. if (db.open())  
  17.     {  
  18.         QMessageBox::information(this, tr("提示"), tr("Oracle資料庫連線成功!"), tr("確定"));  
  19.     }  
  20. else
  21.     {  
  22.         QMessageBox::information(this, tr("提示"), tr(
    "Oracle資料庫連線失敗!"), tr("確定"));  
  23.         qDebug() <<"error_Oracle:\n" << db.lastError().text();  
  24.     }  
  25. }  

二:連線過程遇到的問題。

問題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)將整個程式發到客戶端。

相關推薦

Qt遠端連線Oracle資料庫

一:程式碼 [cpp] view plaincopyprint? /**連線Oracle資料庫    *資料庫名:abc    *表名:my_oracle    *使用者名稱:system    *密碼:123    *埠號:(預設)1521  */ void MainDialog::con

***初學者之 Navicat遠端連線Oracle資料庫*

** 本人連線到遠端資料庫的成功步驟,錯誤的就不顯示出來了。 1.這個東西是需要下載其他玩意的 instantclient-basic-windows.*64-12.0.1.0.zip instantclient-sqlplus-windows.*64-12.2

Navicat Premium 12遠端連線oracle資料庫

首先去oracle官網下載Instant Client 和sqlplus,下載地址: 注意下載的檔案要和你的系統對應,如果你的系統是32位的需要下載32位的檔案,

使用sqlplus和PLSql developer遠端連線oracle資料庫

 下面的圖片展示了安裝oracle資料庫伺服器端軟體和客戶端軟體的兩個流程:       通過上面的流程,我們清楚伺服器端和客戶端分別有一個需要配置的檔案,伺服器端的是監聽器配置檔案,客戶端是網路服務名稱配置檔案。分別簡述如下:       伺服器端的監聽器檔案儲

PLSQL developer+instantclient_11_2實現遠端連線Oracle資料庫

1、 下載PLSQL developer、instantclient_11_2, 下載地址:https://pan.baidu.com/s/1_MjmIT4nUzsQ7Hi8MCrs1A, 備註:此安裝包包含plsql(64位)和instantclient

使用PL/SQL Developer 遠端連線Oracle資料庫出現 “無監聽程式“錯誤 的解決辦法

今天在使用PLSQL遠端連線ORACLE資料庫的時候,突然報錯,無監聽程式,出現這個錯誤 我首先第一反應是開啟 服務 看了一下 Oracle常用的幾個服務是否正常啟動,監聽服務是否啟動,打開發現ORACLE的 所必須開的的服務  都已經正常執行,  然後我又嘗試連線了一下本

ORACLE- PLSQL Developer 遠端連線oracle資料庫

1、先到Oracle網站下載Instant Client : 根據你的作業系統選擇不同的Instant Client版本 下載會是一個壓縮檔案,解壓之後的資料夾叫:D:\Program Files\PLSQL Developer\instantclient_11_2

PL/SQL遠端連線oracle資料庫完美教程

PL/SQL遠端連線oracle資料庫教程 - 所需要包: 安裝步驟: 1.到Oracle網站下載Instant Client 下載會是一個壓縮檔案,解壓之後的資料夾叫:instantclient_12_2.放在你喜歡的目

Windows如何用PL/SQL Developer遠端連線Oracle資料庫

第二步:如果你的plsql沒有設定中文字符集的功能,比如我的plsql developer10就沒有,那可以用設定環境變數的方式解決此問題,在環境變數中新增一個名稱為NLS_LANG值為你oracle字符集(比如SIMPLIFIED CHINESE_CHINA.ZHS16GBK)的系統變數,重啟plsql

QT通過ODBC驅動連線Oracle資料庫

1)我是用的是qt4.8.6,裡面是自帶odbc驅動的,如果沒有的話也可以進行編譯,具體方法是: 第一步,開啟qt下的黑窗體; 第二步,一次輸入:           1、  cd C:\Qt\4.8.6\src\plugi

Oracle資料庫視覺化工具(plsql developer)連線遠端伺服器Oracle資料庫

參考部落格: 特別感謝以上博主的技術文章,本部落格參考以上部落格並加以整合,實現自己的功能需求,有部分文字別的博主的文章就不能贊一詞,所以會有拿來主義,並註明出處。如果有博主覺得我的做法欠佳,私信或者評論,我會修改。 需求說明: 本機使用視覺化工具連線遠端伺服器上的

不安裝Oracle客戶端遠端連線Orcale資料庫

最近有一任務,需要使用Oracle資料庫,以前對此不太熟悉,就從網上查詢資料,(說實在的網路真是太好了,也多虧了許多的熱心的技術人員,願意把自己的經驗和心得與大家分享)並轉貼了一個帖子參考,不過此帖子有些地方沒有說清楚,確實讓我費了好大勁,才測試成功。下面我把我的步驟說明一下

PHP 連線 oracle資料庫(可遠端)的測試操作

4、第四步:檢測oci8是否配置成功       1.一般情況下,開啟localhost即能顯示 phpinfo.php介面,裡面即為 php 資訊。可採用 “Ctrl+F”搜尋“oci”,檢視是否有對應的oci模組,當然有一點php基礎的完全可以直接訪問自己編寫的檔案,記得裡面加入“echo phpin

QT連線Oracle資料庫

        這兩天一直困擾於Qt連線資料庫的問題,首先我描述下我的實驗環境和我遇到的問題,然後再給出具體的解決方案。 1、版本:qt 4.8.3,vs2008,Oracle10g; 2、實驗環境和遇到的問題:Oracle安裝在區域網內的一個伺服器上,我自己的機器沒有安裝

Hibernate連線oracle資料庫:外部(遠端資料庫和內部(本地)資料庫

連線內部資料庫 <property name="jdbcUrl" value="jdbc:oracle:thin:@localhost:1521:orcl"></property>//127.0.0.0 <pr

Qt連線Oracle資料庫詳細介紹(QOCI)

Qt連線Oracle資料庫詳細介紹 1.前提條件 (1)本地安裝了Oracle資料庫或者oracle instant client。 (2)已編譯成功所需要的lib檔案QOCI.lib       (這部分等我稍後補上) 2.實現程式碼: (1)包含lib檔案  QtS

plsql、dblink連線Oracle資料庫長時間空閒後自動斷開及遠端終端連線linux空閒超時後自動斷開問題

一、plsql及dblink連線Oracle資料庫長時間空閒後自動斷開 現象: 1、plsql連線資料庫長時間空閒後自動斷開 2、使用dblink訪問資料,長時間空閒後,連線時報錯失去連線等,需要重新

delphi 7連線oracle資料庫問題

ADOQuery1: Parameter 'a_id' not found問題 遇到此報錯,首先要查詢是否欄位拼寫問題或者繫結變數時確實“:”,排除這個之後再嘗試以下方法。 1.Delphi 7連線oracle資料庫時沒有Oracle Provider for O

PLSql連線Oracle資料庫的錯誤提示

今天我安裝了Oracle資料庫,使用PLSql連線時 提示"no listener" 與      Ora-12514:tns:偵聽器目前不知道連線描述符中請求的服務 ;      還有在本地計算機無法啟動OracleOraHome

記一次jdbc連線oracle資料庫佔用CPU過高的問題排查

    背景:     公司有一個通訊系統,主要是通訊資料到客戶端程式所指定的資料庫,目前支援sqlserver、mysql和oracle三種類型的資料庫,此篇主要記錄一次oracle資料庫佔用CPU飆高的問題。   &nbs