Подтвердить что ты не робот

Получить пользователя и пароль из ConnectionStringSettings

Как я могу получить пользователя и пароль из такого connectionString в app.config с помощью функции .NET?

Конечно, я мог бы прочитать эту строку и получить значение после 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>
4b9b3361

Ответ 1

используйте ConnectionBuilderClass

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


вместе с

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

чтобы достичь этого.

Ответ 2

SqlConnectionStringBuilder con = new SqlConnectionStringBuilder(ConfigurationManager.ConnectionStrings["ConnString"].ConnectionString);
string myUser = con.UserID;
string myPass = con.Password;

Ответ 3

var builder = new SqlConnectionStringBuilder(ConfigurationManager.ConnectionStrings["MyConString"].ConnectionString)
var user = builder.UserID;
var password = builder.Password;

Ответ 4

Если вам нужен более общий подход для синтаксического анализа строки подключения (тот, который не касается специфики одного поставщика базы данных), вы также можете использовать

System.Data.Common.DbConnectionStringBuilder

который является базовым классом для других классов, таких как SqlConnectionStringBuilder и т.д.

Вы можете создать экземпляр DbConnectionStringBuilder, и в моем случае мне понадобилась одна конфигурируемая строка подключения, из которой я мог бы получить информацию - независимо от типа поставщика базы данных. Несколько вариантов, если вам нужна эта гибкость - вы могли бы создать соответствующий ConnectionStringBuilder для своего провайдера, как предложили другие, - это, вероятно, потребуется для большинства случаев, когда требуются специфические для провайдера свойства.

Или, если вы хотите прочитать только несколько общих свойств, вы можете использовать DbConnectionStringBuilder, если вам нужен только идентификатор пользователя и пароль.

Этот образец должен работать для ЛЮБОЙ строки подключения, которая включает идентификатор пользователя и пароль.

DbConnectionStringBuilder db = new DbConnectionStringBuilder();
db.ConnectionString = ConfigurationManager.ConnectionStrings["myConnectionString"].ConnectionString;

var username = db["User Id"].ToString();
var password = db["Password"].ToString();

Ответ 5

Вы можете получить строку подключения из следующих

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

Затем вы можете получить подстроку, которую ищете.

Ответ 6

Просто добавлю немного ответа Томаша Уэйка.

Этот подход будет работать только в том случае, если "ИД пользователя" в строке подключения заглавется правильно. Поставщик Oracle принял "Идентификатор пользователя" в порядке, но 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 { }
    }
}

Ответ 7

добавить ссылку на 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;

Ответ 8

 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 вы можете использовать то, что хотите "Пользователь" или пароль.

Ответ 9

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

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]);