Compartilhar via


Função ConfigDSN

Conformidade
Versão introduzida: ODBC 1.0

Resumo
O ConfigDSN adiciona, modifica ou exclui fontes de dados das informações do sistema. Ele pode solicitar ao usuário informações de conexão. Ele pode estar na DLL do driver ou em uma DLL de configuração separada.

Sintaxe

  
BOOL ConfigDSN(  
     HWND     hwndParent,  
     WORD     fRequest,  
     LPCSTR   lpszDriver,  
     LPCSTR   lpszAttributes);  

Argumentos

hwndParent
[Entrada] Identificador de janela pai. A função não exibirá nenhuma caixa de diálogo se o identificador for nulo.

fRequest
[Entrada] Tipo de solicitação. O argumento fRequest deve conter um dos seguintes valores:

ODBC_ADD_DSN: adicionar uma nova fonte de dados.

ODBC_CONFIG_DSN: configure (modifique) uma fonte de dados existente.

ODBC_REMOVE_DSN: remover uma fonte de dados existente.

lpszDriver
[Entrada] Descrição do driver (geralmente o nome do DBMS associado) apresentada aos usuários em vez do nome do driver físico.

lpszAttributes
[Entrada] Uma lista duplamente terminada em nulo de atributos na forma de pares chave-valor. Para obter mais informações, confira "Comentários".

Retornos

A função retornará TRUE se for bem-sucedida, FALSE se falhar.

Diagnósticos

Quando ConfigDSN retorna FALSE, um valor *pfErrorCode associado é postado no buffer de erros do instalador por uma chamada para SQLPostInstallerError e pode ser obtido chamando SQLInstallerError. A tabela a seguir lista os valores *pfErrorCode que podem ser retornados por SQLInstallerError e explica cada um deles no contexto dessa função.

*pfErrorCode Erro Descrição
ODBC_ERROR_INVALID_HWND Identificador de janela inválido O argumento hwndParent era inválido.
ODBC_ERROR_INVALID_KEYWORD_VALUE Pares de palavra-chave-valor inválidos O argumento lpszAttributes continha um erro de sintaxe.
ODBC_ERROR_INVALID_NAME Nome do driver ou tradutor inválido O argumento lpszDriver era inválido. Não foi possível encontrá-lo no registro.
ODBC_ERROR_INVALID_REQUEST_TYPE Tipo inválido de solicitação O argumento fRequest não foi um dos seguintes:

ODBC_ADD_DSN ODBC_CONFIG_DSN ODBC_REMOVE_DSN
ODBC_ERROR_REQUEST_FAILED Falha na solicitação Não foi possível executar a operação solicitada pelo argumento fRequest .
ODBC_ERROR_DRIVER_SPECIFIC Erro específico do driver ou do tradutor Um erro específico do driver para o qual não há nenhum erro definido do instalador ODBC. O argumento SzError em uma chamada para a função SQLPostInstallerError deve conter a mensagem de erro específica do driver.

Comentários

O ConfigDSN recebe informações de conexão da DLL do instalador como uma lista de atributos na forma de pares chave-valor. Cada par é encerrado com um byte nulo e toda a lista é encerrada com um byte nulo. (Ou seja, dois bytes nulos marcam o final da lista.) Espaços não são permitidos em torno do sinal de igual no par palavra-chave-valor. O ConfigDSN pode aceitar palavras-chave que não são palavras-chave válidas para SQLBrowseConnect e SQLDriverConnect. O ConfigDSN não dá suporte necessariamente a todas as palavras-chave válidas para SQLBrowseConnect e SQLDriverConnect. (O ConfigDSN não aceita a palavra-chave DRIVER .) As palavras-chave usadas pela função ConfigDSN devem dar suporte a todas as opções necessárias para recriar a fonte de dados usando o recurso de instalação AUTOMÁTICA do instalador. Quando os usos dos valores ConfigDSN e os valores de cadeia de conexão forem os mesmos, as mesmas palavras-chave deverão ser usadas.

Assim como em SQLBrowseConnect e SQLDriverConnect, as palavras-chave e seus valores não devem conter o []{}();? Os caracteres *=!@ e o valor da palavra-chave DSN não podem consistir apenas em espaços em branco. Devido à gramática do Registro, palavras-chave e nomes de fonte de dados não podem conter o caractere de barra invertida (\).

O ConfigDSN deve chamar SQLValidDSN para verificar o comprimento do nome da fonte de dados e verificar se nenhum caractere inválido está incluído no nome. Se o nome da fonte de dados for maior que SQL_MAX_DSN_LENGTH ou incluir caracteres inválidos, SQLValidDSN retornará um erro e ConfigDSN retornará um erro. O comprimento do nome da fonte de dados também é verificado por SQLWriteDSNToIni.

Por exemplo, para configurar uma fonte de dados que requer uma ID de usuário, uma senha e um nome de banco de dados, um aplicativo de instalação pode passar os seguintes pares chave-valor:

DSN=Personnel Data\0UID=Smith\0PWD=Sesame\0DATABASE=Personnel\0\0  

Para obter mais informações sobre essas palavras-chave, consulte SQLDriverConnect e a documentação de cada driver.

Para exibir uma caixa de diálogo, hwndParent não deve ser nulo.

Adicionando uma fonte de dados

Se um nome de fonte de dados for passado para ConfigDSN em lpszAttributes, ConfigDSN verificará se o nome é válido. Se o nome da fonte de dados corresponder a um nome de fonte de dados existente e hwndParent for nulo, ConfigDSN substituirá o nome existente. Se ele corresponder a um nome existente e hwndParent não for nulo, o ConfigDSN solicitará que o usuário substitua o nome existente.

Se lpszAttributes contiver informações suficientes para se conectar a uma fonte de dados, o ConfigDSN poderá adicionar a fonte de dados ou exibir uma caixa de diálogo com a qual o usuário pode alterar as informações de conexão. Se lpszAttributes não contiver informações suficientes para se conectar a uma fonte de dados, o ConfigDSN deverá determinar as informações necessárias; se hwndParent não for nulo, ele exibirá uma caixa de diálogo para recuperar as informações do usuário.

Se ConfigDSN exibir uma caixa de diálogo, ela deverá exibir todas as informações de conexão passadas para ela em lpszAttributes. Em particular, se um nome de fonte de dados tiver sido passado para ele, ConfigDSN exibirá esse nome, mas não permitirá que o usuário o altere. O ConfigDSN pode fornecer valores padrão para informações de conexão não passadas para ele em lpszAttributes.

Se ConfigDSN não puder obter informações completas de conexão para uma fonte de dados, ela retornará FALSE.

Se o ConfigDSN puder obter informações completas de conexão para uma fonte de dados, ele chamará SQLWriteDSNToIni na DLL do instalador para adicionar a nova especificação de fonte de dados ao arquivo de Odbc.ini (ou registro). SQLWriteDSNToIni adiciona o nome da fonte de dados à seção [Fontes de Dados ODBC], cria a seção de especificação da fonte de dados e adiciona a palavra-chave DRIVER com a descrição do driver como seu valor. ConfigDSN chama SQLWritePrivateProfileString na DLL do instalador para adicionar quaisquer palavras-chave e valores adicionais usados pelo driver.

Modificando uma fonte de dados

Para modificar uma fonte de dados, um nome de fonte de dados deve ser passado para ConfigDSN em lpszAttributes. O ConfigDSN verifica se o nome da fonte de dados está no arquivo de Odbc.ini (ou registro).

Se hwndParent for nulo, ConfigDSN usará as informações em lpszAttributes para modificar as informações no arquivo de Odbc.ini (ou registro). Se hwndParent não for nulo, ConfigDSN exibirá uma caixa de diálogo usando as informações em lpszAttributes; para obter informações que não estão em lpszAttributes, ele usa informações das informações do sistema. O usuário pode modificar as informações antes que o ConfigDSN as armazene nas informações do sistema.

Se o nome da fonte de dados tiver sido alterado, o ConfigDSN primeiro chamará SQLRemoveDSNFromIni na DLL do instalador para remover a especificação de fonte de dados existente do arquivo de Odbc.ini (ou registro). Em seguida, ele segue as etapas na seção anterior para adicionar a nova especificação de fonte de dados. Se o nome da fonte de dados não tiver sido alterado, ConfigDSN chamará SQLWritePrivateProfileString na DLL do instalador para fazer outras alterações. ConfigDSN não pode excluir ou alterar o valor da palavra-chave Driver .

Excluindo uma fonte de dados

Para excluir uma fonte de dados, um nome de fonte de dados deve ser passado para ConfigDSN em lpszAttributes. O ConfigDSN verifica se o nome da fonte de dados está no arquivo de Odbc.ini (ou registro). Em seguida, ele chama SQLRemoveDSNFromIni na DLL do instalador para remover a fonte de dados.

Observação

Se estiver escrevendo uma versão Unicode dessa rotina, ela deverá ser chamada de ConfigDSNW, com argumentos LPCWSTR em vez de LPCSTR.

Para obter informações sobre Consulte
Adicionar, modificar ou remover uma fonte de dados SQLConfigDataSource
Obtendo um valor do arquivo Odbc.ini ou do registro SQLGetPrivateProfileString
Removendo a fonte de dados padrão SQLRemoveDefaultDataSource
Removendo um nome de fonte de dados de Odbc.ini (ou registro) SQLRemoveDSNFromIni
Adicionando um nome de fonte de dados a Odbc.ini (ou registro) SQLWriteDSNToIni
Gravando um valor no arquivo Odbc.ini ou no registro SQLWritePrivateProfileString