Ir para conteúdo
Fórum Script Brasil
  • 0

Criar entrada ODBC usando C/C++


CPP

Pergunta

Olá galera,

Tive que criar uma conexão ODBC de forma automática pra facilitar a vida dos usuários e sofri bastante pra entender alguns códigos em outras linguagens.

Depois que migrei tudo pro C/C++ resolvi postar a solução aqui.

Espero que ajude.

(Testado no CBUILDER 5)

Documentação da Microsoft: http://support.microsoft.com/kb/142216/pt-br

void CreateODBCDriver(void)
{
    typedef int WINAPI (*TSQLConfigDataSource)(HINSTANCE HWND, unsigned int fRequest, LPCSTR lpszDriver, LPCSTR lpszAttributes);

    #define ODBC_ADD_DSN         1 // Adiciona uma fonte de dados (data source)
    #define ODBC_CONFIG_DSN      2 // Configura a fonte de dados (data source)
    #define ODBC_REMOVE_DSN      3 // Remove a fonte de dados (data source)
    #define ODBC_ADD_SYS_DSN     4 // Adiciona um DSN no sistema
    #define ODBC_CONFIG_SYS_DSN  5 // Configura o DSN do sistema
    #define ODBC_REMOVE_SYS_DSN  6 // Remove o DSN do sistema

    TSQLConfigDataSource sqlConfigDataSource;
    HANDLE hLib;
    bool fResult;
    TSearchRec srInfo;

    hLib = LoadLibrary("ODBCCP32"); // carregando a DLL
    if(hLib != NULL)
        {
        sqlConfigDataSource = (TSQLConfigDataSource) GetProcAddress(hLib, "SQLConfigDataSource"); // selecionando a função que gerencia as entradas ODBC
        if (sqlConfigDataSource != NULL)
            {
// cada argumento passado em lpszAttributes deve terminar com \x0
// se hoyver necessidade ou interesse o caminho do banco pode ser informado junto com o nome em DBQ e CREATE_DBQ.
// Exemplo: DBQ=c:\\app\\db\\Database.mdb\x0
            fResult = sqlConfigDataSource(NULL, ODBC_ADD_DSN ,"Microsoft Access Driver (*.mdb)", "DSN=NOME_FONTE\x0 DBQ=Database.mdb\x0 Exclusive=1\x0 Description=Criacao fonte ODBC\x0");
            if( fResult == false )
                {
// se não conseguir criar o registro por ausencia do banco, tentar registrar ao mesmo tempo que cria o .mdb
                if(FindFirst("DataBase.mdb", 0, srInfo ) != 0)
                    {
                    fResult = sqlConfigDataSource(NULL, ODBC_ADD_DSN ,"Microsoft Access Driver (*.mdb)", "DSN=NOME_FONTE\x0 DBQ=Database.mdb\x0 Exclusive=1\x0 Description=Criacao fonte ODBC\x0 CREATE_DB=Database.mdb\x0");
                    if (fResult == false)
                        ShowMessage( "Falha ao tentar criar o banco de dados");
                    }
                FindClose( srInfo );
                }
            }
        FreeLibrary( hLib );
        if (fResult)
            ShowMessage( "Banco de dados criado." );
        }
    else
        ShowMessage( "o sistema não pode carregar a biblioteca ODBCCP32.DLL" );
}

Editado por CPP
Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...