[英]Read oracle connection string from c#
假设我有一个字符串
metadata=res://*/Mapping.Models.csdl|res://*/Mapping.Models.ssdl|res://*/Mapping.Models.msl;provider=Oracle.ManagedDataAccess.Client;provider connection string="data source=TESTSERVER;password=pass;persist security info=True;user id=id\"
如何获取如下字符串:
data source=TESTSERVER;password=pass;persist security info=True;user id=id
如果要解析提到的字符串,则可以使用EntityConnectionStringBuilder 。
像ProviderConnectionString这样的属性可以为您提供所需的字符串。
例
var myEntityConnection = @"metadata=res://*/Mapping.Models.csdl|res://*/Mapping.Models.ssdl|res://*/Mapping.Models.msl;provider=Oracle.ManagedDataAccess.Client;provider connectionstring='""data source=TESTSERVER;password=pass;persist security info=True;user id=id";
var builder = new EntityConnectionStringBuilder(myEntityConnection);
Console.WriteLine(builder.ProviderConnectionString);
那就是你所需要的:)
为什么甚至需要使用EntityConnectionStringBuilder来对连接字符串进行子字符串化,如下所述:
var connString = new EntityConnectionStringBuilder(ConfigurationManager.ConnectionStrings["ConnectionStringKey"].ConnectionString);
然后可以从中检索ProviderConnectionString ,如下所示:
var providerString = connString.ProviderConnectionString;
对于Oracle:
对于oracle,可以使用OracleConnectionStringBuilder
如果需要,可以使用正则表达式获取连接字符串:
(data source).*[^"]
尝试按给定的分隔符分割字符串 。 然后连接数组元素。
string [] stringArray = str.Split(new string [] {“ =”},StringSplitOptions.None);
您可以通过首先搜索子字符串provider connection string=
来使用String.Substring
:
int index = text.IndexOf(@"provider connection string=");
string result = text.Substring(index).Trim('"');
试试这个正则表达式:
\"[^\"]*\"
要么
\".*?\"
说明:
[^ character_group ]
否定:匹配不在character_group中的任何单个字符。
*?
与上一个元素匹配零次或多次,但次数最少。
和示例代码:
foreach(Match match in Regex.Matches(inputString, "\"([^\"]*)\""))
Console.WriteLine(match.ToString());
//或在LINQ中
var result = from Match match in Regex.Matches(line, "\"([^\"]*)\"")
select match.ToString();
您可以使用SubString逻辑。
string strConnection = @"metadata=res://*/Mapping.Models.csdl|res://*/Mapping.Models.ssdl|res://*/Mapping.Models.msl;provider=Oracle.ManagedDataAccess.Client;provider connection string='""data source=TESTSERVER;password=pass;persist security info=True;user id=id";
strConnection = strConnection.Substring(strConnection.LastIndexOf("data source"));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.