Database string koneksi dinamis c #

9

Saya selalu menggunakan baris kode ini untuk koneksi:

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

Apa yang saya coba lakukan saat ini adalah alih-alih menulis setiap kali data server saya dalam skrip secara langsung saya ingin mengisi beberapa kotak teks. jadi saya mencoba melakukan sesuatu seperti ini

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

di mana txtmysource.Text / txtmyusername.Text / txtmypassword.Text / txtmydatabasename.Text adalah nama-nama kotak teks di UI. tetapi saya tidak dapat menemukan cara menulis untuk melakukannya.

Raouf Bessghaier
sumber

Jawaban:

28

Anda mungkin ingin DbConnectionStringBuilder, idealnya yang benar untuk RDBMS Anda - jadi dengan SQL Server:

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

Bit penting di sini adalah bahwa ia akan menerapkan karakter yang benar melarikan diri dll jika (misalnya) salah satu elemen berisi karakter yang dilindungi / non-sepele seperti spasi, koma, tanda kutip, dll.

Marc Gravell
sumber
2

Mungkin dengan string interpolasi seperti ini:

string ConnectString = $"datasource = {txtmysource.Text}; username = {txtmyusername.Text}; password = {txtmypassword.Text}; database = {txtmydatabasename.Text}";
Francois Borgies
sumber
2
yang baik-baik saja sampai seseorang membuat database yang disebut a;b="c- yang ya, diizinkan
Marc Gravell
Terima kasih telah diperbaiki sekarang dengan solusi Anda
Raouf Bessghaier
2
@RaoufBessghaier Anda harus menandainya sebagai jawaban (centang hijau) dalam kasus itu
Marc Gravell