MDB的数据库,用ADO连接,怎么获得所有的表名称?还有怎么知道是否有密码?

解决方案 »

  1.   

    如何知道数据库中包括哪些表和字段 当你打开Database对象以后,Database对象包括TableDefs集合。这个集合包括数据库中所有表的定义。表的个数为TableDefs.Count。你可以使用TableDefs(0),......,TableDefs(TableDefs.Count - 1)来依次获得各个表的定义(TableDef对象)。你也可以利用For Each ... Next来遍历整个集合。每个TableDef对象都表示一个表的结构,其Name属性就是表名。如果打开一个MDB文件,你可能会得到比实际多的表的个数,这是因为Access数据库中还有一些系统表,这些表通常不会被Access和VB显示出来,但你可以使用VB访问它们。如果你不想让这些系统表出现在你的列表中,可以判断TableDef的Attribution属性,如: 
        IF TableDef(i).Attibution And dbSystemObject Then 
         ' 系统表 
        Else 
         ' 普通的用户表 
        End If 
        得到一个TableDef对象,你可以进一步访问TableDef.Fields集合。这个集合表示有多少个字段,它的每个成员为Field对象,代表一个字段。访问的方法类似TableDefs。每个Field对象有若干个属性,包括字段名、字段类型等。 
        在VB的帮助有相应的例子。另外,我经常象初学者推荐VB的例子VisData(在Samples\VisData目录)。在这个例子中包括很多有用的程序段落。比如在VisData.bas中,GetTableList过程获得所有表名。 
      

  2.   

    参考:http://www.china-askpro.com/msg14/qa13.shtml
      

  3.   

    Private Sub Command4_Click() '列出所有表,如果省略第二个参数则显示所有表(连同系统表一起显示)
    Dim Link As New ADODB.Connection
    Dim Rs As New ADODB.Recordset
    Link.CursorLocation = adUseClient
    Link.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.mdb;Persist Security Info=False"
    Link.Open
    Set Rs = Link.OpenSchema(adSchemaTables, Array(Empty, Empty, Empty, "Table"))
    Do Until Rs.EOF
        MsgBox Rs!TABLE_NAME
        Rs.MoveNext
    Loop
    End Sub
      

  4.   

    谢谢hpygzhx520() ,还有怎么获得表的字段名呢?
      

  5.   

    MDB里有个系统表,里面有所有表的名字,也有所有字段的名字。默认情况下,打开MDB时是看不到这个表的,在安全设置里重新设置一下就能看到了。可以象普通表一样访问这些系统表。