2014-02-15 2 views
0

Я использую приложение winform для C# с использованием MySql в качестве базы данных. Используя App.config файл, приложение чтение строки подключения для подключения базы данных следующим образом:Динамическое предоставление имени пользователя и пароля для строки подключения

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <connectionstring> 
    <addkey="MySQL.DB"value="server=localhost;database=mysqldbname;user=username;password=12345678;"> 
    </add> 
</connectionstring> 
</configuration> 

Есть ли способ, что мы можем предоставить имя пользователя и пароль не от App.config но от пользователя приложения, введя имя пользователя и пароль ? так что мы можем защитить конфиденциальные данные. Другая информация в порядке, чтобы читать из app.config, как имя базы данных, сервера и т.д.

Ахмеда

ответ

3

вы можете иметь appSettings

<appSettings> 
     <add key="ConFormat" value="server=localhost;database=mysqldbname;user={0};password={1};"/> 
    </appSettings> 

читать и установите значения

var formatString = ConfigurationManager.AppSettings["ConFormat"].ToString(); 
var conString = string.Format(formatString , SecureUserName, SecurePW); 
1

Если вы используете raw ADO.NET, тогда вы можете использовать построитель строк подключения, предположительно, MySqlConnectionStringBuilder в вашем случае. Создайте новый экземпляр с строкой соединения из файла конфигурации, установите соответствующие свойства и затем получите результат из свойства ConnectionString.

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

+0

@jmcilhinnet это очень хорошее предложение, но Damith предлагает более лучшее решение с примером. – Ahmed

+0

Нет, Дамит представил пример с меньшим разрешением. Если вы хотите использовать это, потому что вы можете скопировать и вставить этот пример и не думать о себе, это зависит от вас. – jmcilhinney

+0

На самом деле нет ... это больше, чем просто копировать/вставлять ... Я должен сделать гораздо больше изменений в подключении. Очевидно, когда новичок отправляет проблему, это всего лишь симптомы, а не весь проект здесь. Решение Damith предоставляет четкий путь для реализации в моем проекте. – Ahmed

0

Изменить код в app.config, как этот

<add key="MySQL.DB"value="server=localhost;database=mysqldbname;user=&usernamefromuser;password=&passfromuser;"> 

Добавить кнопку для подключения и 2 Textboxes для имени пользователя и пароля

Кнопки Код:

//other code for mysql variables ... 
string connectionStr= connStrFrom_App_Config.Replace("&usernamefromuser",texBox1.Text).Replace("&passfromuser",textBox2.Text); 
//other code for connecting 
Смежные вопросы