Partilhar via


Fonte de dados: Configurando programaticamente uma fonte de dados ODBC

Este tópico explica como você pode configurar nomes de fonte de dados ODBC (Open Database Connectivity) programaticamente. Isso lhe dá flexibilidade para acessar dados sem forçar o usuário a usar explicitamente o administrador ODBC ou outros programas para especificar os nomes das fontes de dados.

Normalmente, um usuário executa o Administrador ODBC para criar uma fonte de dados se o sistema de gerenciamento de banco de dados associado (DBMS) oferecer suporte a essa operação.

Ao criar uma fonte de dados ODBC do Microsoft Access por meio do Administrador ODBC, você tem duas opções: você pode selecionar um arquivo de .mdb existente ou pode criar um novo arquivo .mdb. Não há nenhuma maneira programática de criar o arquivo .mdb a partir do seu aplicativo MFC ODBC. Portanto, se seu aplicativo requer que você coloque dados em uma fonte de dados do Microsoft Access (arquivo .mdb), você provavelmente deseja ter um arquivo de .mdb vazio que você pode usar ou copiar sempre que precisar.

No entanto, muitos DBMSs permitem a criação de fontes de dados programáticas. Algumas fontes de dados mantêm uma especificação de diretório para bancos de dados. Ou seja, um diretório é a fonte de dados e cada tabela dentro da fonte de dados é armazenada em um arquivo separado (no caso do dBASE, cada tabela é um arquivo .dbf). Os drivers para outros bancos de dados ODBC, como o Microsoft Access e o SQL Server, exigem que alguns critérios específicos sejam atendidos antes que uma fonte de dados possa ser estabelecida. Por exemplo, ao usar o driver ODBC do SQL Server, você precisa ter estabelecido um computador SQL Server.

Exemplo de SQLConfigDataSource

O exemplo a seguir usa a ::SQLConfigDataSource função ODBC API para criar uma nova fonte de dados do Excel chamada New Excel Data Source:

SQLConfigDataSource(NULL,ODBC_ADD_DSN, "Excel Files (*.xls)",
                   "DSN=New Excel Data Source\0"
                   "Description=New Excel Data Source\0"
                   "FileType=Excel\0"
                   "DataDirectory=C:\\EXCELDIR\0"
                   "MaxScanRows=20\0");

Observe que a fonte de dados é, na verdade, um diretório (C:\EXCELDIR); este diretório deve existir. O driver do Excel usa diretórios como suas fontes de dados e arquivos como as tabelas individuais (uma tabela por .xls arquivo).

Para obter mais informações sobre como criar tabelas, consulte Fonte de dados: Criando programaticamente uma tabela em uma fonte de dados ODBC.

As informações a seguir abordam os parâmetros que precisam ser passados para a função de API ODBC ::SQLConfigDataSource . Para usar ::SQLConfigDataSource, deve-se incluir o arquivo de cabeçalho Odbcinst.h e usar a biblioteca de importação Odbcinst.lib. Além disso, Odbccp32.dll deve estar presente no caminho durante o tempo de execução (ou Odbcinst.dll para 16 bits).

Você pode criar um nome de fonte de dados ODBC usando o Administrador ODBC ou um utilitário semelhante. No entanto, às vezes é desejável criar um nome de fonte de dados diretamente do seu aplicativo para obter acesso sem exigir que o usuário execute um utilitário separado.

O Administrador ODBC (normalmente instalado no Painel de Controle) cria uma nova fonte de dados colocando entradas no registro do Windows (ou, para 16 bits, no arquivo Odbc.ini). O Gerenciador de Driver ODBC consulta esse arquivo para obter as informações necessárias sobre a fonte de dados. É importante saber que informações precisam ser colocadas no registo, porque precisas de as fornecer com a chamada para ::SQLConfigDataSource.

Embora esta informação possa ser gravada diretamente no registo sem usar o ::SQLConfigDataSource, qualquer aplicação que faça isso está a confiar na técnica atual que o Gestor de Controladores usa para manter os seus dados. Se uma revisão posterior do Gestor de Controladores ODBC implementar o registo de dados sobre fontes de dados de uma maneira diferente, qualquer aplicação que utilize essa técnica deixa de funcionar. Geralmente, é aconselhável usar uma função API quando uma é fornecida. Por exemplo, seu código é portátil de 16 bits a 32 bits se você usar a ::SQLConfigDataSource função, porque a função grava corretamente no arquivo Odbc.ini ou no registro.

Parâmetros SQLConfigDataSource

A seguir explicamos os parâmetros da ::SQLConfigDataSource função. Muitas das informações são retiradas da referência do programador de API ODBC fornecida com o Visual C++ versão 1.5 e posterior.

Protótipo de função

BOOL SQLConfigDataSource(HWND hwndParent,UINT fRequest, LPCSTR lpszDriver, LPCSTR lpszAttributes);

Observações

Parâmetros e Utilização

hwndPai
A janela especificada como o proprietário de quaisquer caixas de diálogo que o Gerenciador de Driver ODBC ou o driver ODBC específico cria para obter informações adicionais do usuário sobre a nova fonte de dados. Se o parâmetro lpszAttributes não fornecer informações suficientes, uma caixa de diálogo será exibida. O parâmetro hwndParent pode ser NULL.

lpszDriver
A descrição do driver. Este é o nome apresentado aos usuários em vez do nome do driver físico (a DLL).

lpszAtributos
Lista de atributos no formato "keyname=value". Essas cadeias de caracteres são separadas por terminadores nulos com dois terminadores nulos consecutivos no final da lista. Esses atributos são principalmente entradas padrão específicas do driver, que vão para o registro para a nova fonte de dados. Uma chave importante que não é mencionada na referência da API ODBC para essa função é "DSN" ("nome da fonte de dados"), que especifica o nome da nova fonte de dados. As restantes entradas são específicas para o driver para a nova fonte de dados. Muitas vezes não é necessário fornecer todas as entradas porque o driver pode solicitar ao usuário caixas de diálogo para os novos valores. (Defina hwndParent como NULL para causar isso.) Talvez você queira fornecer explicitamente valores padrão para que o usuário não seja solicitado.

Para determinar a descrição de um driver para o parâmetro lpszDriver usando o administrador ODBC

  1. Execute o administrador ODBC.

  2. Clique em Adicionar.

Isso fornece uma lista de drivers instalados e suas descrições. Use esta descrição como o parâmetro lpszDriver . Observe que você usa a descrição inteira, como "Arquivos do Excel (*.xls)", incluindo a extensão de nome de arquivo e parênteses, se existirem na descrição.

Como alternativa, pode examinar o registo (ou, para 16 bits, o ficheiro Odbcinst.ini), que contém uma lista de todas as entradas de driver e descrições sob a chave de registo "Drivers ODBC" (ou a secção [Drivers ODBC] em Odbcinst.ini).

Uma maneira de encontrar os nomes de chave e valores para o parâmetro lpszAttributes é examinar o arquivo Odbc.ini para uma fonte de dados já configurada (talvez uma que tenha sido configurada pelo administrador ODBC).

Para localizar nomes de chave e valores para o parâmetro lpszAttributes

  1. Execute o editor de registo do Windows (ou, para 16 bits, abra o ficheiro Odbc.ini).

  2. Encontre as informações das fontes de dados ODBC usando uma das seguintes opções:

    • Para 32 bits, encontre a chave HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC Data Sources no painel esquerdo.

      O painel direito lista as entradas do formulário: "pub: REG_SZ:<data source name>", onde <o nome> da fonte de dados é uma fonte de dados que já foi configurada com as configurações desejadas para o driver que você pretende usar. Selecione a fonte de dados desejada, por exemplo, SQL Server. Os itens que seguem a string "pub:" são, em ordem, o nome da chave e o valor a ser usado no parâmetro lpszAttributes .

    • Para 16 bits, localize a seção no arquivo Odbc.ini marcada por [<nome> da fonte de dados].

      As linhas que seguem esta linha são do formato "keyname=value". Estas são exatamente as entradas para usar em seu parâmetro lpszAttributes .

Você também pode querer examinar a documentação do driver específico que vai usar. Você pode encontrar informações úteis na Ajuda on-line para o driver, que você pode acessar executando o administrador ODBC. Esses arquivos de Ajuda geralmente são colocados no diretório WINDOWS\SYSTEM para Windows NT, Windows 3.1 ou Windows 95.

Para obter ajuda online do seu driver ODBC

  1. Execute o administrador ODBC.

  2. Clique em Adicionar.

  3. Selecione o nome do controlador.

  4. Clique em OK.

Quando o Administrador ODBC exibir as informações para criar uma nova fonte de dados para esse driver específico, clique em Ajuda. Isso abre o arquivo de Ajuda para esse driver específico, que geralmente contém informações importantes sobre o uso do driver.

Ver também

Fonte de dados (ODBC)