2009-11-09 61 views
11

如果我可以在C#中打开与MS Access文件的连接,如何检索Access数据库中存在的不同表的列表(如果可能的话,还有任何元数据与表相关)?在MS Access文件中检索表列表

+0

哪些元数据您需要了解有关以下解决方案? – 2009-11-09 21:08:27

+0

至少,该表的描述(如果保存的话) – 2009-11-10 04:25:05

+0

[我如何获得Access(Jet)数据库中的表的列表?](http://stackoverflow.com/questions/ 6152545/how-can-i-get-a-list-in-an-access-jet-database) – Fionnuala 2012-02-09 10:55:11

回答

25

我刚刚发现从David Hayden

// Microsoft Access provider factory 
DbProviderFactory factory = DbProviderFactories.GetFactory("System.Data.OleDb"); 

DataTable userTables = null; 
using (DbConnection connection = factory.CreateConnection()) { 
    // c:\test\test.mdb 
    connection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\test\\test.mdb"; 
    // We only want user tables, not system tables 
    string[] restrictions = new string[4]; 
    restrictions[3] = "Table"; 

    connection.Open(); 

    // Get list of user tables 
    userTables = connection.GetSchema("Tables", restrictions); 
} 

List<string> tableNames = new List<string>(); 
for (int i=0; i < userTables.Rows.Count; i++) 
    tableNames.Add(userTables.Rows[i][2].ToString()); 
+0

在特定列中查找最高数字的任何帮助?使用c# – gsvirdi 2011-07-16 05:00:46

1

下面的是一些链接:

这里有一个VB.NET snipit得到一个访问表的所有列,我知道这不是正是你”重新寻找,但列出所有表时,类似的原始苹果:

Dim oleConn As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & myDB & ";User Id=admin;Password=;") 

oleConn.Open() 
Dim schemaTable As DataTable 
Dim i As Integer 
schemaTable = oleConn.GetOleDbSchemaTable(OleDbSchemaGuid.Column s, _ 
New Object() {Nothing, Nothing, "tblTheTableToListColumns", Nothing}) 
For i = 0 To schemaTable.Columns.Count - 1 
Debug.Print(schemaTable.Rows(i)!COLUMN_NAME.ToStri ng) 
Next i 
oleConn.Close()