Pergunta

Temos um site do ASP.NET que usa um banco de dados que queremos poder usar um ConnectionString para chegar. Configuramos com sucesso um DSN para conectar -se a este banco de dados, mas não consigo descobrir a magia correta para acompanhar um conexão.

Existe uma maneira direta de traduzir os valores do DSN em um ConnectionsTring? Sei que, na interface do usuário, não há uma resposta óbvia para isso ... Cada fornecedor de banco de dados fornece uma interface do usuário diferente para criar um DSN com base no que eles exigem. No entanto, eu esperava que, por baixo da interface do usuário, isso pudesse estar fazendo algo como criar uma string de conexão nos bastidores, e eu pudesse ver isso para ver o que estou fazendo de errado. Alguma esperança disso? Em caso afirmativo, alguma dica sobre como obter as informações de que preciso?

(Eu fui ao Connectionstrings.com para tentar garantir que minha string de conexão esteja no formato certo, mas nada parece estar funcionando ... e é por isso que estou tentando esse estranho tradução-tato-dsn.)

EDITAR: Algo que não devo ter sido claro é que não queremos ter uma entrada DSN. Criamos um e o usamos por enquanto, mas queremos poder nos livrar dele e usar um conexão sem um dsn.

Foi útil?

Solução

Se você pode usar o OLEDB, pode criar um Arquivo udl. Basta criar um novo documento de texto, test.udl e clique duas vezes. Preencha a caixa de diálogo e abra -a de volta com o bloco de notas. Voila - aí está sua sequência de conexão.

ODBC é um pouco mais difícil - você pode criar um arquivo DSN do administrador da ODBC ou cutucar o registro em HKLM\Software\ODBC\ODBC.INI\<DSN Name> Para um sistema DSN. Você acabará com alguns pares de nome/valor. Você deve ser capaz de traduzi -los em uma string de conexão. o \\Driver listará a DLL real, então você precisará obter o nome do provedor de HKLM\Software\ODBC\ODBC Data Sources\\<DSN Name>.

Se você pode usar o provedor OLEDB para ODBC, poderá usar o truque UDL e criar uma string de conexão a partir de um arquivo DSN do ODBC. A sequência de conexão ODBC estará em propriedades estendidas da UDL.

Outras dicas

Se você criou um DSN, então o DSN é O Conectionstring!

Você pode simplesmente usar DSN=<YourDSNName> e passe -o para um objeto ODBCConnection.

Por exemplo, usando C#:

string dsnName = "DSN=MyDSN";
using (OdbcConnection conn = new OdbcConnection(dsnName))
{
  conn.Open();
}

Como alternativa, você pode usar o OdbcConnectionStringBuilder classe e defina seu DSN propriedade.

Para expandir a resposta de Mark Brackett sobre o Registro: para um ODBC de 32 bits em um Windows de 64 bits, o caminho do registro é hklm software wow6432Node odbc odbc.ini

No meu caso, foi suficiente para:

  • Remova o cabeçalho
  • Substitua todas as novas linhas por semicolons
  • Use aparelho como um separador de grupo

Aqui está o meu arquivo DSN, criado pelo ODBC Data Source Administrator (3ª guia - File DSN)

[ODBC]
DRIVER=MySQL ODBC 5.3 ANSI Driver
UID=MyUserName
PORT=3306
DATABASE=mydatabasename
SERVER=localhost

E aqui está como parecia minha string de conexão:

DRIVER={MySQL ODBC 5.3 ANSI Driver};UID=MyUserName;PORT=3306;DATABASE=mydatabasename;SERVER=localhost
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top