2011-10-26 66 views
19

如何从具有.NET函数的app.config中的这样的connectionString获取用户和密码?从ConnectionStringSettings获取用户和密码

当然,我可以读取该字符串并获取ID =和Password =后的值。

<connectionStrings> 
<add name="MyConString" connectionString="Data Source=(local);Initial Catalog=MyDatabase;Persist Security Info=True;User ID=MyUsername Password=MyPassword;Connect providerName="System.Data.SqlClient"/>  
</connectionStrings> 
+1

我希望你注意到你缺少一个“;名为myUsername”后‘’ - 前‘密码’ –

回答

31

使用与

string connString = ConfigurationManager.ConnectionStrings["MyConString"].ConnectionString; 

的ConnectionBuilderClass

SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder("Your connection string"); 
string password = builder.Password; 


共同实现这一目标。

+0

+1绝对是最简单的解决方案 – Tim

+0

!烨大答案 – msfanboy

-2
var connString = ConfigurationManager.ConnectionStrings["MyConString"].ConnectionString; 
var tokens = connString.Split(';'); 

string userId; 
string password; 

for(var i = 0; i < tokens.Length; i++) { 
    var token = tokens[i]; 
    if(token.StartsWith("User ID")) 
     userId = token.Substring(token.IndexOf("=") + 1); 

    if(token.StartsWith("Password")) 
     password = token.Substring(token.IndexOf("=") + 1); 
} 
+0

+1的代码示例但是,应该不会是'token.Substring(token.IndexOf( “=”)+ 1);'去掉“=”? – Tim

+0

@Tim:谢谢,注意和编辑 - 脱口而出总是讨厌它的丑陋的头:) –

1

您可以从以下

SqlConnectionStringBuilder yourconn = new SqlConnectionStringBuilder(ConfigurationManager.ConnectionStrings["ConnString"].ConnectionString); 
string password = yourconn.Password; 

获得连接字符串,然后你可以得到你正在寻找的子字符串。

2
var builder = new SqlConnectionStringBuilder(ConfigurationManager.ConnectionStrings["MyConString"].ConnectionString) 
var user = builder.UserID; 
var password = builder.Password; 
4
SqlConnectionStringBuilder con = new SqlConnectionStringBuilder(ConfigurationManager.ConnectionStrings["ConnString"].ConnectionString); 
string myUser = con.UserID; 
string myPass = con.Password; 
-2
string connectionString = ConfigurationManager.ConnectionStrings["MyConString"].ConnectionString; 
var tokens = connectionString.Split(';').Select(n => n.Split('='); 
string userId = tokens.First(n => n[0].Equals("User ID").Select(n => n[1]); 
string password = tokens.First(n => n[0].Equals("Password").Select(n => n[1]); 
0

只是一个位添加到托马斯Walek的答案。

只有在连接字符串中的“用户ID”正确大写时,此方法才有效。 Oracle提供商接受“用户ID”确定,但SqlConnectionStringBuilder没有工作。使用System.Configuration ;:

public static class DbConnectionFactory 
{ 
    public static ConnectionStringSettings AppConnectionSettings = ConfigurationManager.ConnectionStrings["{A connection string name}"]; 
    public static SqlConnectionStringBuilder AppConnBuilder = new SqlConnectionStringBuilder(AppConnectionSettings.ConnectionString); 

    public static string DbUserID 
    { 
     get 
     { 
      return AppConnBuilder.UserID; 
     } 
     set { } 
    } 
} 
0

添加到System.Configuration的引用,然后使用

string MyDBConnection = ConfigurationManager.ConnectionStrings["MyDBConnection"].ConnectionString; 
SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(MyDBConnection); 
string UserID = builder.UserID; 
string Password = builder.Password; 
string ServerName = builder.DataSource; 
string DatabaseName = builder.InitialCatalog; 
0
public static string GetConnectionSettings(string searchSetting) 
{ 
    var con = ConfigurationManager.ConnectionStrings["yourConnectionHere"]‌​.ConnectionString; 
    String[] myString = con.Split(';'); 
    Dictionary<string, string> dict = new Dictionary<string, string>(); 

    for (int i = 0; i < myString.Count(); i++) 
    { 
     String[] con3 = myString[i].Split('='); dict.Add(con3[0], con3[1]); 
    } 

    return dict[searchSetting]; 
} 

为searchSetting你可以使用你想要的 “用户是” 或密码。