Как запросить структуры таблиц из базы данных доступа? - PullRequest
0 голосов
/ 07 января 2019

Я хочу получить структуру всех таблиц и odbc-Datasources в базе данных Access с C #. Поэтому я попробовал этот код:

string text="";
var tables = GetApp().CurrentData.AllTables;
for (int i = 0; i < tables.Count; i++)
{
    var currentTable = tables.Item(i);
    text = text + currentTable.FullName + Environment.NewLine;
}
MessageBox.Show(text);

Возвращает все доступные имена таблиц. Но как мне получить столбцы и типы таблиц?

Я пробовал это:

var props = currentTable.Properties;
for (int j = 0; j < props.Count; j++)
{
    var prop = props.Item(j);
    text = text + Environment.NewLine + prop.Name;
}

но это не сработало (Исключение было вызвано, когда я получил доступ к свойствам).

Я пытался использовать соединение oleDB + GetSchema, чтобы получить структуру таблицы. Но с помощью этого метода я получил только «родные» (или локальные) таблицы внутри access-db. Но есть также некоторые таблицы ODBC-Linked-Table, которые меня тоже интересуют.

Так как можно получить TableNames, ColumnNames и Columntypes в файле базы данных ms-access?

1 Ответ

0 голосов
/ 07 января 2019

Вам нужно использовать CurrentDb().TableDefs, если вы хотите получить доступ к столбцам таблицы. Коллекция AllTables не предоставляет доступа к полям таблицы.

CurrentDb().TableDefs[0].Fields[0].Name должен возвращать имя первого столбца первой таблицы, например.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...