Base de datos de cadena de conexión dinámica c #


9

Siempre uso esta línea de código para la conexión:

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

Lo que intento hacer esta vez es en lugar de escribir cada vez que los datos de mi servidor en el script directamente quiero llenar un cuadro de texto. así que trato de hacer algo como esto

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

donde txtmysource.Text / txtmyusername.Text / txtmypassword.Text / txtmydatabasename.Text son los nombres del cuadro de texto en la interfaz de usuario. pero no puedo encontrar la forma de escribir para hacerlo.

Respuestas:


28

Probablemente desee DbConnectionStringBuilder, idealmente el correcto para su RDBMS, así que con SQL Server:

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

Lo crucial aquí es que aplicará el carácter correcto de escape, etc., si (por ejemplo) alguno de los elementos contiene caracteres reservados / no triviales, como espacios en blanco, comas, comillas, etc.


2

Tal vez con una cadena interpolada como esta:

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

2
lo cual está bien hasta que alguien cree una base de datos llamada a;b="c- que sí, está permitido
Marc Gravell

Gracias solucionado ahora con su solución
Raouf Bessghaier

2
@RaoufBessghaier debe marcarlo como la respuesta (marca verde) en ese caso
Marc Gravell
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.