如何获取表Schema

时间:2010-01-06 13:01:49

标签: ms-access visual-studio-2005

我正在使用Microsoft visual studio 2005.任何人都可以告诉我如何获取MS访问数据库的表名和列名?

3 个答案:

答案 0 :(得分:4)

通常,您应该使用数据库驱动程序的元数据功能来执行此操作。所有数据库调用级API我听说过可以返回数据库元数据的供应方法/函数/过程,通常作为结果集。

你没有提到任何语言,所以我们假设你正在使用C#。在这种情况下,您将生成OleDB(OleDB是.NET语言的驱动程序框架)连接对象,并在其上调用GetOleDbSchemaTable方法。然后,这将为您提供一个DataTable对象,使您可以访问传达此信息的数据行。

有关OleDB示例,请参阅:http://msdn.microsoft.com/en-us/library/aa288452(VS.71).aspx

有关GetOleDbSchemaTable方法,请参阅:http://msdn.microsoft.com/en-us/library/system.data.oledb.oledbconnection.getoledbschematable(VS.71).aspx

有关OleDB提供的元数据类型的信息,请参阅:http://msdn.microsoft.com/en-us/library/system.data.oledb.oledbschemaguid_members(VS.71).aspx

答案 1 :(得分:1)

您可以通过查询以下表格来完成此操作

  • MSysAccessObjects

    MSysAccessXML

    MSysACEs

    MSysObjects

    MSysQueries

    MSysRelationships

如果这些表未显示打开表选项,并在“视图”选项卡上选中“系统对象”

答案 2 :(得分:1)

这个例子是VBA,但应该可以在使用ADO时翻译这个想法。

Dim rs As ADODB.Recordset
Dim cn As ADODB.Connection

Set cn = "Provider = Microsoft.Jet.OLEDB.4.0; " _
    & "Data Source = MyDB.mdb"

Set rs = cn.OpenSchema( _
    adSchemaTables, Array(Empty, Empty, Empty))
Debug.Print rs.GetString
rs.Close
Set rs = Nothing

adSchemaTables类似,adSchemaColumns可用于返回列。约束为TABLE_CATALOGTABLE_SCHEMATABLE_NAMECOLUMN_NAME,因此您可以看到可以返回特定表的列数据,或者所有列和关联的表名。例如:

Set rs = cn.OpenSchema( _
    adSchemaTables, Array(Empty, Empty, "Employees", "name"))
Debug.Print rs("TABLE_NAME") & "." _ 
    & rs("COLUMN_NAME") & ": " _
    & rs("DATA_TYPE")

有关详细信息,请参阅https://msdn.microsoft.com/en-us/library/ms676705.aspx