如何使用.NET函数从app.config中的这样一个connectionString获取用户名和密码?
当然,我可以读取该字符串并获取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>
答案 0 :(得分:32)
使用ConnectionBuilderClass
SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder("Your connection string");
string password = builder.Password;
连同
string connString = ConfigurationManager.ConnectionStrings["MyConString"].ConnectionString;
实现这一目标。
答案 1 :(得分:4)
SqlConnectionStringBuilder con = new SqlConnectionStringBuilder(ConfigurationManager.ConnectionStrings["ConnString"].ConnectionString);
string myUser = con.UserID;
string myPass = con.Password;
答案 2 :(得分:2)
var builder = new SqlConnectionStringBuilder(ConfigurationManager.ConnectionStrings["MyConString"].ConnectionString)
var user = builder.UserID;
var password = builder.Password;
答案 3 :(得分:2)
如果您需要更通用的方法来解析连接字符串(一个不处理一个数据库提供程序的细节),您也可以使用
System.Data.Common.DbConnectionStringBuilder
这是其他类的基类,如SqlConnectionStringBuilder等。
您可以创建DbConnectionStringBuilder的实例,在我的情况下,我需要有一个可配置的连接字符串,我可以从中获取信息 - 无论数据库提供程序类型如何。如果您需要这种灵活性,可以选择一些选项 - 您可以像其他人所建议的那样为您的提供商创建适当的ConnectionStringBuilder--对于需要提供者特定属性的大多数情况,这可能是必需的。
或者,如果您只想阅读几个通用属性,如果您只需要用户ID和密码,则可以使用DbConnectionStringBuilder。
此示例应适用于包含用户标识和密码的任何连接字符串。
DbConnectionStringBuilder db = new DbConnectionStringBuilder();
db.ConnectionString = ConfigurationManager.ConnectionStrings["myConnectionString"].ConnectionString;
var username = db["User Id"].ToString();
var password = db["Password"].ToString();
答案 4 :(得分:1)
您可以从以下
获取连接字符串 SqlConnectionStringBuilder yourconn = new SqlConnectionStringBuilder(ConfigurationManager.ConnectionStrings["ConnString"].ConnectionString);
string password = yourconn.Password;
然后,您可以获取您要查找的子字符串。
答案 5 :(得分:0)
只是为Tomas Walek的回答添加一点。
只有在连接字符串中的“用户ID”正确大写时,此方法才有效。 Oracle提供商接受“用户ID”确定,但SqlConnectionStringBuilder
无效。
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 { }
}
}
答案 6 :(得分:0)
添加对System.Configuration的引用,然后使用: 使用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;
答案 7 :(得分: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,你可以使用你想要的东西&#34; User Is&#34;或密码。
答案 8 :(得分:0)
另一种方法是使用正则表达式(我所做的)(具有更宽容的模式)来处理可以在连接字符串上提供用户ID的不同方式:
public static string GetUserIdFromConnectionString(string connectionString)
{
return new Regex("USER\\s+ID\\=\\s*?(?<UserId>\\w+)",
RegexOptions.IgnoreCase)
.Match(connectionString)
.Groups["UserId"]
?.Value;
}
答案 9 :(得分:-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);
}
答案 10 :(得分:-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]);