通过ADODB连接数据库之后,有没有办法在程序里获得数据库的信息???
比如数据库类型。能不能通过程序返回连接的数据库类型??是Access还是SQL Server或者DB2、oracle???
还有连接方式,是通过ODBC,还是OLE直连??或者其他方式?其他数据库信息能不能获得??

解决方案 »

  1.   

    能不能通过程序返回连接的数据库类型??是Access还是SQL Server或者DB2、oracle???
    ---------------------------------------------------
    这些东西不知道,怎么连接?还有连接方式,是通过ODBC,还是OLE直连??或者其他方式?
    ---------------------------------------------------------
    这是你自己设的啊。
      

  2.   

    用MsgBox db.ConnectionString判断连接字符串
      

  3.   


    对呀,不知道数据库类型怎么通过ADODB连接数据库?
      

  4.   

    晕了,你都用ADO连接上了,这还需要判断吗
      

  5.   

    跟ADODC一样的,那些命令都一样用,只是功能更强大而已。
      

  6.   

    楼主有点误区,不同的数据库需要提供不听的驱动去连接ado只是数据方法,不是数据驱动,access的驱动是jet4.0,sql的驱动又是SQLOLEDB.1所以你不知道是数据库之前是无法去连接数据库的所谓因果关系,不知道因就不知道果,楼主把这个给弄反了
      

  7.   

    前边说的不是太清楚。问题是这样的:
    工程-〉引用-〉Microsoft OLE DB Service Component 1.0 Library
    工程-〉引用-〉Microsoft ActiveX Data Objects 2.7 Library通过以下代码弹出数据库连接属性对话框,用户可以在对话框中自由选择要连接的数据库及连接方式。Dim objCreateDB As MSDASC.DataLinks
    Dim cnnCreateDB As New ADODB.ConnectionSet objCreateDB = New MSDASC.DataLinks
    Set cnnCreateDB = New ADODB.Connection
    objCreateDB.hWnd = frmConnectDB.hWnd
    cnnCreateDB.open (objCreateDB.PromptNew)
    txtString.Text = cnnCreateDB.ConnectionString
    cnnCreateDB.Close用户设置好之后,将连接字符串返回到文本框txtString中。这样,用户使用时会连接什么数据库?是通过ODBC连接还是直连??这些我在编程阶段是无法预先知道的,我能得到的只有连接字符串。但是我在后边的程序里需要判断用户连接的是哪种数据库?通过哪种方式连接的?然后根据不同的 数据库作相应的处理。
      

  8.   

    TO tztz520(午夜逛街):怎么通过ConnectionString判断连接的是哪种数据库??
      

  9.   

    莫MM及楼上各位所说的是可以预知数据库及连接方式,可以在程序里写死数据库连接字符串的情况。我是通过MSDASC的数据连接属性对话框,让用户来选择要连接的数据库及连接方式。
    程序里只能返回结果,无法预知。但是我在后边的程序里需要根据不同的 数据库作相应的处理。
    现在我想知道的是如何根据返回结果(ConnectionString)获知连接的数据库类型??
      

  10.   

    Public Con As New ADODB.ConnectionSub main()
        Dim str As String
        
        str = "provider=sqloledb.1;data source=.;initial catalog=lianxi;user id=sa;password=sa"
        '这是SQL的连接方式
        Con.Open str
        frmLogin.Show
    End Sub希望对你有帮助:)
      

  11.   

    provider=sqloledb.1
    设置这个属性的值,SQL就是这么写
    如果连接别的数据库就不一样了:)
      

  12.   

    一样是根据数据驱动,jet4.0的为access 2K以上数据库这样子
      

  13.   

    也就是说截取“provider”部分,写个select case 或者instr()来判断,带"jet"就是Access数据库,带"sqloledb"的就是SQL Server数据库,..............这样还有两个问题:
    1。同一个数据库的不同版本是不是一致的??能不能屏蔽掉版本的差异??
    2。如果是通过ODBC数据源连接,provider部分一直都是"Provider=MSDASQL",这时如何区分不同的数据库??
      

  14.   

    1。同一个数据库的不同版本是不是一致的??能不能屏蔽掉版本的差异??
    //不能,最多检查access是97还是2K
    2。如果是通过ODBC数据源连接,provider部分一直都是"Provider=MSDASQL",这时如何区分不同的数据库??
    //这个偶没考虑过,偶只考虑ado的连接方式但是怎么感觉还有个地方不对啊...
    用户不知道数据库,怎么连接的?
    要么楼主去http://www.connectionstrings.com/分析下每种数据库的连接不同?
      

  15.   

    2。如果是通过ODBC数据源连接,provider部分一直都是"Provider=MSDASQL",这时如何区分不同的数据库??
    //这个偶没考虑过,偶只考虑ado的连接方式
    -----------------------------------------------------
    ado也可以通过ODBC数据源来连接数据库,不考虑不行啊。
      

  16.   

    要么楼主去http://www.connectionstrings.com/分析下每种数据库的连接不同?
    --------------------------------------------------------------------------
    头大了!!
    去看了一下,通过ODBC方式连接的ConnectionString的数据库驱动Drive项居然不是必须的。也就是说ConnectionString里可能根本没有区分不同数据库的字符。
      

  17.   

    2。如果是通过ODBC数据源连接,provider部分一直都是"Provider=MSDASQL",这时如何区分不同的数据库??
    -------------------------------------
    不同的数据库他们的txtString应该有区别,根据这些区别来判断即可。
    如果判断不了,把你不能判断的数据库说出来。
    还有,客户的数据库应该只考虑主流的几种,好像是应该需求分析时确认好。
    不清楚你做的东西。把你的问题细化一下再问效果更好。
      

  18.   

    还有,客户的数据库应该只考虑主流的几种,好像是应该需求分析时确认好。
    不清楚你做的东西。把你的问题细化一下再问效果更好。
    -------------------------------------------------------------------
    只要支持SQL Server \Oracle\DB2\Access\Sybase这几种就基本满足要求了,其他可以暂时不考虑。
    还有个InforMix,能支持最好,不能支持也没关系。
      

  19.   

    不同的数据库他们的txtString应该有区别,根据这些区别来判断即可。
    如果判断不了,把你不能判断的数据库说出来。
    ----------------------------------------------------------------------
    我现在就知道通过ODBC连接Access时,ConnectionString里会有"dbq=c:\test.mdb"(.mdb文件路径)这个字符串。
    其他数据库我看着都差不多。
      

  20.   

    还有,客户的数据库应该只考虑主流的几种,好像是应该需求分析时确认好。
    不清楚你做的东西。把你的问题细化一下再问效果更好。
    -------------------------------------------------------------------
    只要支持SQL Server \Oracle\DB2\Access\Sybase这几种就基本满足要求了,其他可以暂时不考虑。
    还有个InforMix,能支持最好,不能支持也没关系。
    刚才还漏了个MySQL,也是能支持最好,不能支持也没关系。
      

  21.   

    oledb
    -------------------------------------------------
    oledb方式已经解决了,可以区分出不同的数据库了。
    现在是ODBC方式,除了Access之外,都区分不出来.
      

  22.   

    可以通过读注册表来实现"HKEY_CURRENT_USER\SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources" 下对应用户DSN
    "HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources" 下对应系统DSN
    "HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\ODBC File Sources" 下对应文件DSN