从c#中读取oracle连接字符串

时间:2014-08-11 07:42:12

标签: 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

7 个答案:

答案 0 :(得分:6)

如果要解析所提到的字符串,则可以使用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);

这就是你所需要的:)

答案 1 :(得分:1)

为什么你需要使用 EntityConnectionStringBuilder 来链接连接字符串,如下所述:

var connString = new EntityConnectionStringBuilder(ConfigurationManager.ConnectionStrings["ConnectionStringKey"].ConnectionString);

从中你可以检索 ProviderConnectionString ,如下所示:

var providerString = connString.ProviderConnectionString;

对于Oracle:

对于oracle,您可以使用OracleConnectionStringBuilder

答案 2 :(得分:0)

如果需要,可以使用正则表达式获取连接字符串:

(data source).*[^"]

答案 3 :(得分:0)

按给定的分隔符尝试splitting string。然后连接数组元素。

string [] stringArray = str.Split(new string [] {" ="},StringSplitOptions.None);

答案 4 :(得分:0)

首先搜索子字符串String.Substring

,您可以使用provider connection string=
int index = text.IndexOf(@"provider connection string=");
string result = text.Substring(index).Trim('"');

答案 5 :(得分:0)

试试这个正则表达式:

\"[^\"]*\"

\".*?\"

解释:

[^ 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();

答案 6 :(得分:0)

您可以使用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"));