Database stringa di connessione dinamica c #


9

Im uso sempre questa riga di codice per la connessione:

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

Quello che sto cercando di fare in questo momento è invece di scrivere ogni volta che i miei dati del server nello script direttamente voglio riempire qualche casella di testo. quindi sto provando a fare qualcosa del genere

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

dove txtmysource.Text / txtmyusername.Text / txtmypassword.Text / txtmydatabasename.Text sono i nomi della casella di testo nell'interfaccia utente. ma non riesco a trovare il modo di scrivere per farlo.

Risposte:


28

Probabilmente vuoi DbConnectionStringBuilder, idealmente quello corretto per il tuo RDBMS, quindi con SQL Server:

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

Il bit cruciale qui è che applicherà il carattere corretto che fuoriesce ecc. Se (per esempio) uno degli elementi contiene caratteri riservati / non banali come spazi bianchi, virgole, virgolette, ecc.


2

Magari con una stringa interpolata come questa:

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

2
che va bene fino a quando qualcuno non crea un database chiamato a;b="c- che sì, è permesso
Marc Gravell

Grazie risolto ora con la tua soluzione
Raouf Bessghaier

2
@RaoufBessghaier dovresti contrassegnarlo come risposta (segno di spunta verde) in quel caso
Marc Gravell
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.