C# 从ConnectionString设置获取用户和密码
如何使用.NET函数从app.config中的此类连接字符串获取用户和密码 当然,我可以读取该字符串并获得ID=和Password=之后的值C# 从ConnectionString设置获取用户和密码,c#,connection-string,app-config,C#,Connection String,App Config,如何使用.NET函数从app.config中的此类连接字符串获取用户和密码 当然,我可以读取该字符串并获得ID=和Password=之后的值 <connectionStrings> <add name="MyConString" connectionString="Data Source=(local);Initial Catalog=MyDatabase;Persist Security Info=True;User ID=MyUsername Password=MyPass
<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>
var connString=ConfigurationManager.ConnectionString[“MyConString”].ConnectionString;
var tokens=connString.Split(“;”);
字符串用户标识;
字符串密码;
for(var i=0;i
您可以从以下位置获取连接字符串
SqlConnectionStringBuilder yourconn = new SqlConnectionStringBuilder(ConfigurationManager.ConnectionStrings["ConnString"].ConnectionString);
string password = yourconn.Password;
然后,您可以获得您要查找的子字符串。使用ConnectionBuilderClass
SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder("Your connection string");
string password = builder.Password;
连同
string connString = ConfigurationManager.ConnectionStrings["MyConString"].ConnectionString;
要做到这一点。只需给托马斯·瓦莱克的答案增加一点
var builder = new SqlConnectionStringBuilder(ConfigurationManager.ConnectionStrings["MyConString"].ConnectionString)
var user = builder.UserID;
var password = builder.Password;
只有当连接字符串中的“用户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 { }
}
}
添加对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;
public静态字符串GetConnectionSettings(字符串搜索设置)
{
var con=ConfigurationManager.ConnectionString[“yourConnectionHere”].连接字符串;
字符串[]myString=con.Split(“;”);
Dictionary dict=新字典();
对于(int i=0;i
对于搜索设置,您可以使用您想要的“用户是”或密码。如果您需要更通用的方法来解析连接字符串(不涉及某个数据库提供程序的细节),您也可以使用
DbConnectionStringBuilder db = new DbConnectionStringBuilder();
db.ConnectionString = ConfigurationManager.ConnectionStrings["myConnectionString"].ConnectionString;
var username = db["User Id"].ToString();
var password = db["Password"].ToString();
System.Data.Common.DbConnectionStringBuilder
它是其他类(如SqlConnectionStringBuilder等)的基类
您可以创建DbConnectionStringBuilder的实例,在我的例子中,我需要一个可配置的连接字符串,可以从中获取信息,而不管数据库提供程序类型如何。如果您需要这种灵活性,有几个选项——您可以像其他人建议的那样为您的提供程序创建适当的ConnectionStringBuilder——对于大多数需要提供程序特定属性的情况,这可能是必需的
或者,如果只想读取几个通用属性,例如,如果只需要用户id和密码,可以使用DbConnectionStringBuilder
此示例适用于任何包含用户id和密码的连接字符串
DbConnectionStringBuilder db = new DbConnectionStringBuilder();
db.ConnectionString = ConfigurationManager.ConnectionStrings["myConnectionString"].ConnectionString;
var username = db["User Id"].ToString();
var password = db["Password"].ToString();
另一种方法是使用正则表达式(我曾经这样做过),以更宽容的模式处理在连接字符串上提供用户id的不同方式:
public static string GetUserIdFromConnectionString(string connectionString)
{
return new Regex("USER\\s+ID\\=\\s*?(?<UserId>\\w+)",
RegexOptions.IgnoreCase)
.Match(connectionString)
.Groups["UserId"]
?.Value;
}
公共静态字符串GetUserIdFromConnectionString(字符串connectionString)
{
返回新的正则表达式(“用户\\s+ID\\=\\s*?(?\\w+)”,
RegexOptions.IgnoreCase)
.Match(连接字符串)
.Groups[“UserId”]
价值
}
+1用于代码示例。但是,它不应该是token.Substring(token.IndexOf(“=”)+1)代码>去掉“=”?@Tim:谢谢。记录和编辑——一个总是抬起丑陋的头的人在谈论“关”时说:)我希望你注意到你错过了一个';在“MyUsername”之后-在“Password”之前公共静态字符串GetConnectionSettings(字符串搜索设置){var con=ConfigurationManager.ConnectionString[“yourConnectionHere”].ConnectionString;string[]myString=con.Split(';');Dictionary dict=new Dictionary();for(int i=0;i 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];
}
DbConnectionStringBuilder db = new DbConnectionStringBuilder();
db.ConnectionString = ConfigurationManager.ConnectionStrings["myConnectionString"].ConnectionString;
var username = db["User Id"].ToString();
var password = db["Password"].ToString();
public static string GetUserIdFromConnectionString(string connectionString)
{
return new Regex("USER\\s+ID\\=\\s*?(?<UserId>\\w+)",
RegexOptions.IgnoreCase)
.Match(connectionString)
.Groups["UserId"]
?.Value;
}