如何以编程方式获取我要连接的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