Datenbank für dynamische Verbindungszeichenfolgen c #


9

Ich benutze immer diese Codezeile für die Verbindung:

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

Was ich versuche, ist, anstatt jedes Mal, wenn meine Serverdaten direkt in ein Skript geschrieben werden, ein Textfeld zu füllen. Also versuche ich so etwas zu tun

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

Dabei ist txtmysource.Text / txtmyusername.Text / txtmypassword.Text / txtmydatabasename.Text die Namen des Textfelds in der Benutzeroberfläche. aber ich kann den Schreibweg nicht finden, um es zu tun.

Antworten:


28

Sie möchten wahrscheinlich DbConnectionStringBuilder, idealerweise das richtige für Ihr RDBMS - also mit SQL Server:

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

Das Entscheidende dabei ist, dass das richtige Escapezeichen usw. angewendet wird, wenn (zum Beispiel) eines der Elemente reservierte / nicht triviale Zeichen wie Leerzeichen, Kommas, Anführungszeichen usw. enthält.


2

Vielleicht mit einer Interpolationszeichenfolge wie dieser:

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

2
Das ist in Ordnung, bis jemand eine Datenbank namens a;b="c
Marc Gravell

Vielen Dank, dass Sie jetzt mit Ihrer Lösung
behoben haben

2
@ RaoufBessghaier Sie sollten es als die Antwort (grünes Häkchen) in diesem Fall
markieren
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.