Cadeias de caracteres de conexão no ADO.NET
Uma cadeia de conexão contém informações de inicialização que são passadas como parâmetros de um provedor de dados para uma fonte de dados. O provedor de dados recebe a cadeia de conexão como o valor da propriedade DbConnection.ConnectionString. O provedor analisa a cadeia de conexão, garantindo que a sintaxe esteja correta e que as palavras-chave tenham suporte. Em seguida, o método DbConnection.Open() passa os parâmetros de conexão analisados para a fonte de dados. A fonte de dados executa uma validação adicional e estabelece uma conexão.
Sintaxe da cadeia de conexão
A cadeia de conexão é uma lista de pares chave-valor de parâmetros separados por ponto e vírgula:
keyword1=value; keyword2=value;
As palavras-chave não diferenciam maiúsculas de minúsculas. Os valores, no entanto, podem diferenciar maiúsculas de minúsculas, dependendo da fonte de dados. As palavras-chave e os valores podem conter caracteres de espaço em branco. Espaços em branco à esquerda e à direita são ignorados em palavras-chave e valores sem aspas.
Se um valor contiver o ponto e vírgula, caracteres de controle Unicodeou espaços em branco à esquerda ou à direita, ele deverá ser colocado entre aspas simples ou duplas. Por exemplo:
Keyword=" whitespace ";
Keyword='special;character';
O caractere delimitador pode não ocorrer dentro do valor que ele inclui. Portanto, um valor contendo aspas simples pode ser colocado somente entre aspas duplas, e vice-versa:
Keyword='double"quotation;mark';
Keyword="single'quotation;mark";
Você também pode fazer escape do caractere delimitador usando os dois tipos de aspas juntos:
Keyword="double""quotation";
Keyword='single''quotation';
As aspas em si, bem como o sinal de igual, não exigem escape, portanto, as seguintes cadeias de conexão são válidas:
Keyword=no "escaping" 'required';
Keyword=a=b=c
Como cada valor é lido até o próximo ponto e vírgula ou o final da cadeia de caracteres, o valor no último exemplo é a=b=c
, e o ponto e vírgula final é opcional.
Todas as cadeias de conexão compartilham a mesma sintaxe básica descrita anteriormente. No entanto, o conjunto de palavras-chave reconhecidas depende do provedor e evoluiu ao longo dos anos de APIs anteriores, como o ODBC. O provedor de dados .NET Framework para SQL Server (SqlClient
) dá suporte a muitas palavras-chave de APIs mais antigas, mas é geralmente mais flexível e aceita sinônimos para muitas das palavras-chave comuns da cadeia de conexão.
Erros de digitação podem causar problemas. Por exemplo, Integrated Security=true
é válido, mas IntegratedSecurity=true
gera um erro.
As cadeias de conexão construídas manualmente em tempo de execução a partir de uma entrada de usuário não validada são vulneráveis a ataques de injeção de cadeia de caracteres, colocando em risco a segurança da fonte de dados. Para resolver esses problemas, o ADO.NET 2.0 introduziu novos construtores de cadeias de conexão para cada provedor de dados .NET Framework. Esses construtores de cadeias de conexão expõem os parâmetros como propriedades fortemente tipadas e possibilitam a validação da cadeia de conexão antes que ela seja enviada à fonte de dados.
Importante
A Microsoft recomenda usar o fluxo de autenticação mais seguro disponível. Se você estiver se conectando ao SQL do Azure, as Identidades gerenciadas para recursos do Azure é o método de autenticação recomendado.
Nesta seção
Construtores de cadeia de conexão
Demonstra como usar as classes ConnectionStringBuilder
para construir cadeias de conexão válidas em tempo de execução.
Cadeias de conexão e arquivos de configuração
Demonstra como armazenar e recuperar cadeias de conexão em arquivos de configuração.
Sintaxe de cadeia de conexão
Descreve como configurar cadeias de conexão específicas do provedor para SqlClient
, OracleClient
, OleDb
e Odbc
.
Protegendo informações de conexão
Demonstra técnicas para proteger informações usadas para se conectar a uma fonte de dados.