Мне нужно увидеть, существует ли таблица в базе данных Access, используемой моей программой С#. Известно, что существуют команды SQL для других баз данных, которые возвращают список таблиц. Есть ли такая команда для баз данных Access/Jet?
Как я могу получить список таблиц в базе данных Access (Jet)?
Ответ 1
Попробуйте GetSchema()
connection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\access.mdb";
connection.Open();
DataTable userTables = connection.GetSchema("Tables");
Ответ 2
Полный код: Получить список таблиц в базе данных 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
Ответ 3
Что-то вроде этого должно сделать трюк. В предложении Type = 1
указаны таблицы. Обратите внимание, что это также будет включать системные таблицы в наборе результатов (они начинаются с префикса "MSys".
SELECT Name FROM MSysObjects WHERE Type = 1