如何获取Access(Jet)数据库中的表列表?

我需要查看我的c#程序使用的Access数据库中是否存在表。 知道有其他数据库的SQL命令将返回表列表。 Access / Jet数据库是否有这样的命令?

试试GetSchema()

connection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\access.mdb"; connection.Open(); DataTable userTables = connection.GetSchema("Tables"); 

完整代码: 获取Access数据库中的表列表 – ADO.NET教程

 // 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); } // Add list of table names to listBox for (int i=0; i < userTables.Rows.Count; i++) listBox1.Items.Add(userTables.Rows[i][2].ToString()) 

这里是你的答案: http : //social.msdn.microsoft.com/Forums/en/adodotnetdataproviders/thread/d2eaf851-fc06-49a1-b7bd-bca76669783e

这样的事情应该可以解决问题。 子句Type = 1指定表。 请注意,这还将包括结果集中的系统表(它们以前缀“MSys”开头)。

 SELECT Name FROM MSysObjects WHERE Type = 1