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.

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.


2

Mungkin dengan string interpolasi seperti ini:

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

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.