Base de données de chaînes de connexion dynamique c #


9

im utilise toujours cette ligne de code pour la connexion:

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

Ce que j'essaie de faire à ce moment-là, c'est au lieu d'écrire chaque fois que mes données de serveur dans le script directement, je veux remplir une zone de texte. alors j'essaie de faire quelque chose comme ça

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

où txtmysource.Text / txtmyusername.Text / txtmypassword.Text / txtmydatabasename.Text sont les noms de zone de texte dans l'interface utilisateur. mais je ne trouve pas le moyen d'écrire pour le faire.

Réponses:


28

Vous voulez probablement DbConnectionStringBuilder, idéalement celui qui convient à votre SGBDR - donc avec SQL Server:

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

Le point crucial ici est qu'il appliquera le caractère d'échappement approprié, etc. si (par exemple) l'un des éléments contient des caractères réservés / non triviaux tels que des espaces, des virgules, des guillemets, etc.


2

Peut-être avec une chaîne d'interpolation comme celle-ci:

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

2
ce qui est bien jusqu'à ce que quelqu'un crée une base de données appelée a;b="c- ce qui est oui autorisé
Marc Gravell

Merci fixé maintenant avec votre solution
Raouf Bessghaier

2
@RaoufBessghaier vous devez le marquer comme réponse (coche verte) dans ce cas
Marc Gravell
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.