如何以編程方式獲取我要連接的Oracle數據庫的名稱?我試過了:獲取Oracle數據庫名稱
using (OracleConnection connection = new OracleConnection(oraConnectStr))
{
connection.Open();
return connection.Database;
}
但它返回空字符串。我不能使用整個連接字符串,因爲它可能包含用戶名/密碼。
如何以編程方式獲取我要連接的Oracle數據庫的名稱?我試過了:獲取Oracle數據庫名稱
using (OracleConnection connection = new OracleConnection(oraConnectStr))
{
connection.Open();
return connection.Database;
}
但它返回空字符串。我不能使用整個連接字符串,因爲它可能包含用戶名/密碼。
可以查詢v$database
:
SQL> SELECT NAME FROM v$database;
NAME
---------
PROD
並假設他無法連接到數據庫?這個問題可以在沒有網絡連接的情況下解決,不是嗎? – 2010-01-22 15:34:49
並不是每一個用戶可以訪問V $視圖。如果你想從C#,this article shows how to solve it through the ConnectionString內解決這個
SQL> select * from global_name
2/
GLOBAL_NAME
---------------------------------------------------
ORCL
SQL>
編輯
:但是每個人都可以運行此。
您可以使用OracleConnectionStringBuilder對象。
OracleConnectionStringBuilder connStrBuilder = new OracleConnectionStringBuilder(oraConnectStr);
connStrBuilder.DataSource將包含您的信息。
退房: http://download.oracle.com/docs/html/E10927_01/OracleConnectionStringBuilderClass.htm#CHDHBCDA
你有沒有試過regexing連接字符串?或者,爲連接字符串構建一個合適的解析器(這看起來很像扁平化的XML),並以此方式讀取字符串。我不熟悉C#,但這將是一種跨平臺/跨技術的方式來實現這一點。 – 2010-01-22 15:26:15