Динамічна база даних рядка з'єднання c #


9

я завжди використовую для з'єднання цей рядок коду:

 string ConnectString = "datasource = mysource; username = myusername; password = mypassword; database = mydatabasename";

Що я намагаюсь робити в цей час - це замість того, щоб писати кожен раз дані мого сервера в сценарій, я хочу заповнити текстове поле. тому я намагаюся зробити щось подібне

string ConnectString = "datasource = txtmysource.Text; username = txtmyusername.Text; password = txtmypassword.Text; database = txtmydatabasename.Text";

де txtmysource.Text / txtmyusername.Text / txtmypassword.Text / txtmydatabasename.Text - імена текстового поля в інтерфейсі користувача. але я не можу знайти спосіб запису це зробити.

Відповіді:


28

Ви, мабуть, хочете DbConnectionStringBuilder, ідеально підходящий для RDBMS - так що для SQL Server:

var builder = new SqlConnectionStringBuilder
{
    UserID = txtmyusername.Text,
    DataSource = txtmysource.Text,
    Password = txtmypassword.Text,
    InitialCatalog = txtmydatabasename.Text,
};
var connectString = builder.ConnectionString;

Найважливішим бітом тут є те, що він застосує правильний символ уникнення символів тощо, якщо (наприклад) будь-який із елементів містить зарезервовані / нетривіальні символи, такі як пробіли, коми, лапки тощо.


2

Можливо з інтерполяційним рядком, як це:

string ConnectString = $"datasource = {txtmysource.Text}; username = {txtmyusername.Text}; password = {txtmypassword.Text}; database = {txtmydatabasename.Text}";

2
що добре, поки хтось не створить базу даних під назвою a;b="c- що так, дозволено
Марк Гравелл

Дякуємо, що ви вирішили вирішити своє рішення
Рауф Бессгхайер

2
@RaoufBessghaier ви повинні позначити це як відповідь (зелений
галочок
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.