有一个未知 Jet 数据库,但确定是数据库,如何用 VB 的ADO 获取其包含的表的数量和表名?对于其他数据库是不是一样的方法?
我苦思未解,或者 ADO 不支持此法?
类似于 Data View,只要设置 ConnectionString,再执行 Open,即可获取Table的目录树。

解决方案 »

  1.   


    用ADOX可以得到。不过,连接的字符串肯定是不通用的,如果不知道是什么数据库,恐怕很难连接上。
      

  2.   

    如何是access数据库可以打开系统表看看
      

  3.   

    如果是access数据库可以打开系统表看看,visdata中让它们显示出来,你就清楚了
      

  4.   

    Private Sub Form_Load()
      Dim adoCN As New ADODB.Connection       '定义数据库的连接存放数据和代码Dim rstSchema
      Dim strCnn As New ADODB.Recordset
      Dim strConn As String
      
      strConn = " Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=pubs;Data Source=JOHN"
      adoCN.Open strConn
        
      Set rstSchema = adoCN.OpenSchema(adSchemaTables)
      
      Do Until rstSchema.EOF
          out = out & "Table name: " & _
            rstSchema!TABLE_NAME & vbCr & _
            "Table type: " & rstSchema!TABLE_TYPE & vbCr
          rstSchema.MoveNext
      Loop
      rstSchema.Close
      
      adoCN.Close
    Debug.Print out
    End Sub
      

  5.   

    daisy8675(莫依):
        原犸第三行:strSchema 何解?
        out = out &.....out 是什么类型的?
      

  6.   

    rstSchema as new adodb.recordset我帮她帮齐!
      

  7.   

    out还用问嘛当然是字符型的啊!
      

  8.   

    使用ADOX来查询数据库结构,如果你事先并不知道是什么数据库,
    那你可以写一个连接数据库的界面,
    连接类型分两种:Access,其他类型的数据库都放在ODBC连接类型里
    这样你的连接字符串不就确定了?
      

  9.   

    各位朋友的热心帮助让小弟我感激不尽……
    daisy8675(莫依)的那个方法我试过,rstSchema!TABLE_NAME返回字符串"MSysAccessObjects",并不是我要的表的名字。而rstSchema!TABLE_TYPE是可以返回"Access_Table"样的字串。而且这个Loop好久都没停下来,那个out字串变量里存了好多好多东西。我用来验证的数据库只有2个表啊。
    也许有些朋友还未明白我的意图,小弟再说明一下:
    有一个Access数据库(.mdb),里面有两个表,一个名为"学生档案",另一个是"教师档案"。而现在我并不知道这个数据库里面有多少个表,更不知道表的名字。用Data View或者Data Environment都可以很简单地看到。我想做的并不是借助其他工具来看,我要用代码的方式把表的名字列出来!
    关键:不知道有多少个表更不知道表的名字!要用代码!
    为这个,进程已经拖了几天了,55555……
      

  10.   

    被daisy8675(莫依)给抢先了
    55555
      

  11.   

    建议楼主去http://access911.net看看,那里有你想要的东西,给你一个QQ号码,3103919,你可以问他们!