Мне нужно посмотреть, существует ли таблица в базе данных Access, используемой моей программой на c #. Известно, что есть команды 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».
Type = 1
SELECT Name FROM MSysObjects WHERE Type = 1