如何区分连接字符串中的服务名称和连接描述符?

时间:2013-01-29 16:36:09

标签: oracle connection-string datasource odp.net service-name

希望这对甲骨文来说应该是一个简单的方法。

因此,在我之前的Question之后,我现在需要能够在C#中处理连接字符串,并决定是否对数据源'执行LDAP查找。 value(如果它是服务名称),或者只是按原样(连接描述符)。这样做的最佳和最权威方式是什么?我不想做一些无用的事情,比如检查第一个字符是否是一个开括号。我正在寻找特定的模式/签名,以确定是否有数据源'是服务名称或连接描述符。

例如(获得here),带有服务名称,可能是:

  

数据源= TORCL;用户ID = myUsername;密码= myPassword;

使用连接描述符,可能是:

  

数据源=(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL = TCP)(HOST = MyHost)(PORT = MyPort)))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = MyOracleSID)));用户标识=名为myUsername;   密码= MYPASSWORD;

感谢。

1 个答案:

答案 0 :(得分:0)

在没有答案的情况下,我设计了自己的解决方案并不复杂,我假设连接描述符总是包含“DESCRIPTION”。如果这个假设是正确的,那么解决方案是正确的。如果没有,那么请随意建议你自己...

string dataSource = connectionString.Split(';').Select(x => x.Split('=')).Single(x => x.First() == "Data Source").Last();
bool isConnectDescriptor = dataSource.IndexOf("DESCRIPTION", StringComparison.OrdinalIgnoreCase) >= 0;