Banco de dados de cadeia de conexão dinâmica c #


9

eu sempre uso esta linha de código para conexão:

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

O que estou tentando fazer neste momento é, em vez de escrever cada vez que meus dados do servidor em script diretamente, quero preencher alguma caixa de texto. então eu estou tentando fazer algo assim

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

onde txtmysource.Text / txtmyusername.Text / txtmypassword.Text / txtmydatabasename.Text são os nomes da caixa de texto na interface do usuário. mas não consigo encontrar a maneira de escrever para fazer isso.

Respostas:


28

Você provavelmente deseja o DbConnectionStringBuilderideal para o seu RDBMS - portanto, com o SQL Server:

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

O ponto crucial aqui é que ele aplicará o caractere correto, escapando, etc. se (por exemplo) qualquer um dos elementos contiver caracteres reservados / não triviais, como espaço em branco, vírgulas, aspas, etc.


2

Talvez com string interpolada como esta:

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

2
o que é bom até que alguém crie um banco de dados chamado a;b="c- que sim, é permitido
Marc Gravell

Obrigado, corrigido agora com a sua solução
Raouf Bessghaier 12/12/19

2
@RaoufBessghaier, você deve marcá-la como a resposta (marca verde) nesse caso #
Marc Gravell
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.