簡體   English   中英

從C#訪問Oracle數據庫

[英]Accessing Oracle Database from C#

我有一個使用System.Data.OracleClient訪問oracle數據庫的C#程序。

該代碼使用OracleCommand,OracleDataReader對象。 並且它使用TNS名稱來引用特定的oracle服務器(如tnsnames.ora文件中所定義)。

它在我的計算機上運行良好。 然后,我將二進制文件復制到另一台計算機,並且在運行時遇到錯誤:

TNS:無法解析指定的連接標識符。

另一台計算機安裝了相同版本的oracle客戶端,並且tnsnames.ora的相同副本放置在oracle network / admin文件夾中。 另一台計算機還安裝了SQLDeveloper,我可以通過在SQLDeveloper內部使用這些TNS名稱連接到oracle服務器。

為什么然后C#程序抱怨無法解析TNS標識符?

我使用的連接字符串(已硬編碼到我的C#程序中)為;

“數據源= TNS名稱;用戶ID =用戶;密碼=通過;”

謝謝

打開一個命令窗口,輸入tnsping yourdbname並按回車鍵,您應該返回一堆信息,但是您要查找的是

使用的參數文件:

C:\\ ORACLE \\產品\\ 10.1.0 \\ Client_1與\\網絡\\ ADMIN \\ SQLNET.ORA

或類似的東西,這是系統上的“默認” Oracle客戶端,請確保這與您擁有tnsnames.ora的路徑相同(在我的情況下,我們使用sqlnet.ora)

有時,多個Oracle產品安裝會產生多個潛在的ORA_HOME,您至少可以確認“活動”客戶端,這樣您就可以確定文件位於正確的位置。

另外,您可以使用SQLPlus連接到數據庫嗎?

是否無法找到或加載tnsnames.ora文件? 嘗試運行ProcessMonitor( http://technet.microsoft.com/zh-cn/sysinternals/bb896645.aspx ),然后運行c#程序。 您可以查看它是否無法找到.ora文件。

您還可以通過將環境變量TNS_ADMIN設置為tnsnames.ora和sqlnet.ora文件的位置(默認為ORACLE_HOME / network / admin)來強制Oracle在固定位置查找網絡文件。

然后,您不必擔心猜測當前正在運行的特定Oracle進程正在使用哪個network / admin文件夾。

最終,我的問題是我在計算機上安裝了多個Oracle實例,並且需要更新我不知道的第三個tnsnames.ora文件。

出於價值,運行tnsping [dbName]時得到了誤報。 這是有用的信息,但需要進一步調查。 只有當我去檢查Windows環境變量時,我才注意到另一個Oracle路徑並找到了第三個tnsnames.ora。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM