[英]Read oracle connection string from c#
Let's say I have a string 假设我有一个字符串
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\"
How can I get the string as below: 如何获取如下字符串:
data source=TESTSERVER;password=pass;persist security info=True;user id=id
if you want to parse the string mentioned then you can use the EntityConnectionStringBuilder . 如果要解析提到的字符串,则可以使用EntityConnectionStringBuilder 。
There are Properties like ProviderConnectionString which gives you the string you want. 像ProviderConnectionString这样的属性可以为您提供所需的字符串。
Example 例
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);
Thats all you Need :) 那就是你所需要的:)
Why do you need to substring connectionstring even that is possible using EntityConnectionStringBuilder as mentioned below : 为什么甚至需要使用EntityConnectionStringBuilder来对连接字符串进行子字符串化,如下所述:
var connString = new EntityConnectionStringBuilder(ConfigurationManager.ConnectionStrings["ConnectionStringKey"].ConnectionString);
And from it you can retrieve ProviderConnectionString as shown below: 然后可以从中检索ProviderConnectionString ,如下所示:
var providerString = connString.ProviderConnectionString;
For Oracle: 对于Oracle:
For oracle you can use OracleConnectionStringBuilder 对于oracle,可以使用OracleConnectionStringBuilder
如果需要,可以使用正则表达式获取连接字符串:
(data source).*[^"]
Try splitting string by the given delimiter. 尝试按给定的分隔符分割字符串 。 Then concatenate, the array elements.
然后连接数组元素。
string[] stringArray = str.Split(new string[] { "=" }, StringSplitOptions.None); string [] stringArray = str.Split(new string [] {“ =”},StringSplitOptions.None);
You can use String.Substring
by first seraching the sub-string provider connection string=
: 您可以通过首先搜索子字符串
provider connection string=
来使用String.Substring
:
int index = text.IndexOf(@"provider connection string=");
string result = text.Substring(index).Trim('"');
Try this regex: 试试这个正则表达式:
\"[^\"]*\"
or 要么
\".*?\"
explain : 说明:
[^ character_group ]
Negation: Matches any single character that is not in character_group. 否定:匹配不在character_group中的任何单个字符。
*?
Matches the previous element zero or more times, but as few times as possible. 与上一个元素匹配零次或多次,但次数最少。
and a sample code: 和示例代码:
foreach(Match match in Regex.Matches(inputString, "\"([^\"]*)\""))
Console.WriteLine(match.ToString());
//or in LINQ //或在LINQ中
var result = from Match match in Regex.Matches(line, "\"([^\"]*)\"")
select match.ToString();
You can use SubString logic. 您可以使用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.