MSDN中有源代码,还是中文的,就是可视化数据管理器,里面有这个功能的,你可以参考里面的源代码。

解决方案 »

  1.   

    你可以查看WINDOWS注册表中ODBC的存储方式
    ODBC的配置在注册表中保存的
      

  2.   

    引用 ODBC Driver & Data Source Name FunctionsDim xx As New ODBCTool.Dsn
    xx.CreateDSN ...
      

  3.   

    动态新增、移除ODBC DSN一般我们建立 Client 端 DSN 都是在使用者的机器上进入【控制台】【ODBC 资料来源管理员】去建立,但是如果我们开发的 APP 使用者很多时,这就有点累人了,所以我们可以将这个动作放在程序中!新增 DSN 的方法有二种:
    1、使用 DBEngine 物件的 RegisterDatabase 方法
    2、呼叫 SQLConfigDataSource API不管使用以上任何一种方法新增 DSN,一共会写入二个地方,一个是注册表,一个是 ODBC.INI。而删除 DSN 的方法同上面的第二种方法,呼叫 SQLConfigDataSource API。以下之模组以 Oracle73 Ver 2.5 为例,在 Form 的声明区中加入以下声明及模组:Private Const ODBC_ADD_DSN = 1 ′ Add data source
    Private Const ODBC_CONFIG_DSN = 2 ′ Configure (edit) data source
    Private Const ODBC_REMOVE_DSN = 3 ′ Remove data source
    Private Const vbAPINull As Long = 0& ′ NULL PointerPrivate Declare Function SQLConfigDataSource Lib "ODBCCP32.DLL" _
    (ByVal hwndParent As Long, ByVal fRequest As Long, _
    ByVal lpszDriver As String, ByVal lpszAttributes As String) As LongPublic Sub CreateDSN(sDSN As String)
    Dim nRet As Long
    Dim sDriver As String
    Dim sAttributes As String
    sDriver = "Oracle73 Ver 2.5"
    sAttributes = "Server=Oracle8" & Chr$(0)
    sAttributes = sAttributes & "DESCRIPTION=" & sDSN & Chr$(0)
    ′sAttributes = sAttributes & "DSN=" & sDSN & Chr$(0)
    sAttributes = sAttributes & "DATABASE=DBFinance" & Chr$(0)
    sAttributes = sAttributes & "Userid=Scott" & Chr$(0)
    ′sAttributes = sAttributes & "PWD=myPassword" & Chr$(0)
    DBEngine.RegisterDatabase sDSN, sDriver, True, sAttributes ′注一
    ′nRet = SQLConfigDataSource(vbAPINull, ODBC_ADD_DSN, sDriver, sAttributes) ′注二
    End SubPublic Sub DeleteDSN(sDSN As String)
    Dim nRet As Long
    Dim sDriver As String
    Dim sAttributes As String
    sDriver = "Oracle73 Ver 2.5"
    sAttributes = sAttributes & "DSN=" & sDSN & Chr$(0)
    nRet = SQLConfigDataSource(vbAPINull, ODBC_REMOVE_DSN, sDriver, sAttributes)
    End Sub′假设要产生的 DSN 为 Test,实际使用范例如下:Private Sub Command1_Click()
    CreateDSN "Test"
    End SubPrivate Sub Command2_Click()
    DeleteDSN "Test"
    End Sub′而写到系统的资料如下:1、ODBC.INI[ODBC 32 bit Data Sources]
    Test=Oracle73 Ver 2.5 (32 bit)[Test]
    Driver32=C:\ORAWIN95\ODBC250\sqo32_73.dll2、注册表机码:HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC Data Sources
    名称:Test 资料:Oracle73 Ver 2.5机码:HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\Test
    名称:Description 资料:Test
    名称:Driver 资料:C:\ORAWIN95\ODBC250\sqo32_73.dll
    名称:Server 资料:Oracle8
    名称:UserId 资料:Scott※注一及注二可任选一种,只要将不使用的方法 Mark 起来即可!
    ※若您想使用其他之资料库,只要将以上模组稍作修改即可!
           以上代码来自: SourceCode Explorer(源代码数据库)
               复制时间: 2002-06-24 20:49:47
               当前版本: 1.0.714
                   作者: Shawls
               个人主页: Http://Shawls.Yeah.Net
                 E-Mail: [email protected]
                     QQ: 9181729