Как я могу получить список таблиц в базе данных Access (Jet)? - PullRequest
11 голосов
/ 27 мая 2011

Мне нужно посмотреть, существует ли таблица в базе данных Access, используемой моей программой на c #. Известно, что есть команды SQL для других баз данных, которые будут возвращать список таблиц. Есть ли такая команда для баз данных Access / Jet?

Ответы [ 3 ]

11 голосов
/ 27 мая 2011

Попробуйте GetSchema ()

    connection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\access.mdb";    

    connection.Open();

    DataTable userTables = connection.GetSchema("Tables");
7 голосов
/ 27 мая 2011

Полный код: Получить список таблиц в базе данных 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

2 голосов
/ 27 мая 2011

Нечто подобное должно сработать.Предложение Type = 1 определяет таблицы.Обратите внимание, что сюда также будут включены системные таблицы в наборе результатов (они начинаются с префикса «MSys».

SELECT Name FROM MSysObjects WHERE Type = 1
...