Artigo: 184608 - Última revisão: sexta-feira, 28 de Dezembro de 2007 - Revisão: 1.2

Como Criar Programaticamente um DSN para o SQL Server com o VB

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.

Nesta página

Expandir tudo | Reduzir tudo

Sumário

Este artigo demonstra como criar programaticamente um DSN (Data Source Name) para o SQL Server utilizando o Visual Basic. A técnica discutida neste artigo utiliza funções da API (Application Programming Interface) do Windows para criar e manipular entradas no Registo do Windows.

Mais Informação

Os DSNs são normalmente criados através da janela Administrador de Origem de Dados ODBC, que é acessível a partir do Painel de Controlo do Windows (ou das Ferramentas de Administrador do Windows 2000). Outras técnicas que permitem aceder a bases de dados compatíveis com ODBC incluem a utilização de RegisterDatabase (um método DAO (Data Access Object)), a utilização da função SQLConfigDataSource da API do ODBC ou a utilização de uma cadeia de ligação sem DSN.

No entanto, é possível estabelecer um DSN novo criando e manipulando manualmente valores no Registo do Windows. A técnica seguinte utiliza as funções RegCreateKey, RegSetValueEx e RegCloseKey da API para criar um DSN de sistema para uma base de dados do SQL Server.

Procedimentos Passo-a-passo

  1. Abra um projecto novo no Visual Basic. Por predefinição, é criado o Form1. Coloque um CommandButton no Form1 (Command1) e coloque o código seguinte na secção General Declarations do código do Form1:
        Option Explicit
    
        Private Const REG_SZ = 1    'Constant for a string variable type.
        Private Const HKEY_LOCAL_MACHINE = &H80000002
    
        Private Declare Function RegCreateKey Lib "advapi32.dll" Alias _
           "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, _
           phkResult As Long) As Long
    
        Private Declare Function RegSetValueEx Lib "advapi32.dll" Alias _
           "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, _
           ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal _
           cbData As Long) As Long
    
        Private Declare Function RegCloseKey Lib "advapi32.dll" _
           (ByVal hKey As Long) As Long
    						
  2. Coloque o código seguinte no evento de clique do botão Command1 do Form1:

    Altere os valores das variáveis DataSourceName, DatabaseName, Description, DriverPath, LastUser e Server conforme adequado para o seu ambiente. Qualquer um dos controladores listados no separador Controladores ODBC da janela Administrador de Origem de Dados ODBC pode ser utilizado como parte da variável DriverPath. Todos estes controladores podem ser encontrados em C:\Windows\System nos computadores com Windows 95 ou Windows 98 e em C:\Winnt\System32 no Windows NT.
       Private Sub Command1_Click()
    
       Dim DataSourceName As String
       Dim DatabaseName As String
       Dim Description As String
       Dim DriverPath As String
       Dim DriverName As String
       Dim LastUser As String
       Dim Regional As String
       Dim Server As String
    
       Dim lResult As Long
       Dim hKeyHandle As Long
    
       'Specify the DSN parameters.
    
       DataSourceName = "<the name of your new DSN>"
       DatabaseName = "<name of the database to be accessed by the new DSN>"
       Description = "<a description of the new DSN>"
       DriverPath = "<path to your SQL Server driver>"
       LastUser = "<default user ID of the new DSN>"
       Server = "<name of the server to be accessed by the new DSN>"
       DriverName = "SQL Server"
    
       'Create the new DSN key.
    
       lResult = RegCreateKey(HKEY_LOCAL_MACHINE, "SOFTWARE\ODBC\ODBC.INI\" & _
            DataSourceName, hKeyHandle)
    
       'Set the values of the new DSN key.
    
       lResult = RegSetValueEx(hKeyHandle, "Database", 0&, REG_SZ, _
          ByVal DatabaseName, Len(DatabaseName))
       lResult = RegSetValueEx(hKeyHandle, "Description", 0&, REG_SZ, _
          ByVal Description, Len(Description))
       lResult = RegSetValueEx(hKeyHandle, "Driver", 0&, REG_SZ, _
          ByVal DriverPath, Len(DriverPath))
       lResult = RegSetValueEx(hKeyHandle, "LastUser", 0&, REG_SZ, _
          ByVal LastUser, Len(LastUser))
       lResult = RegSetValueEx(hKeyHandle, "Server", 0&, REG_SZ, _
          ByVal Server, Len(Server))
    
       'Close the new DSN key.
    
       lResult = RegCloseKey(hKeyHandle)
    
       'Open ODBC Data Sources key to list the new DSN in the ODBC Manager.
       'Specify the new value.
       'Close the key.
    
       lResult = RegCreateKey(HKEY_LOCAL_MACHINE, _
          "SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources", hKeyHandle)
       lResult = RegSetValueEx(hKeyHandle, DataSourceName, 0&, REG_SZ, _
          ByVal DriverName, Len(DriverName))
       lResult = RegCloseKey(hKeyHandle)
    
       End Sub
    						
  3. Execute o projecto e clique no botão de comando Command1. Em seguida, abra o Administrador de Origem de Dados ODBC a partir do Painel de Controlo (ou as Ferramentas de Administrador no Windows 2000). O novo DSN será apresentado, juntamente com os DSNs dos outros sistemas que já tiver criado.

Referências

Para obter informações adicionais, consulte os seguintes artigos na Base de Dados de Conhecimento Microsoft:
166392  (http://support.microsoft.com/kb/166392/ ) How To Use "DSN-Less" ODBC Connections with RDO
147875  (http://support.microsoft.com/kb/147875/ ) How To Use "DSN-Less" ODBC Connections with RDO and DAO
171146  (http://support.microsoft.com/kb/171146/ ) How To Create and Remove a DSN in Visual Basic
123008  (http://support.microsoft.com/kb/123008/ ) How To Set Up ODBC Data Sources When Distributing Apps

A informação contida neste artigo aplica-se a:
  • Microsoft Visual Basic 5.0 Professional Edition
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic 5.0 Enterprise Edition
  • Microsoft Visual Basic 6.0 Enterprise Edition
Palavras-chave: 
kbhowto KB184608