Получить таблицы / схемы из базы данных Access 97
У меня есть база данных Access 97, из которой я пытаюсь получить схему данных и данные. Я не знаю, сколько там таблиц или как они называются, и каковы имена столбцов.
У меня нет проблем с программным входом в базу данных, но как узнать схему?
Я использую это, чтобы получить таблицу схемы:
static DataTable GetSchemaTable(string connectionString)
{
using (OleDbConnection connection = new OleDbConnection(connectionString))
{
connection.Open();
DataTable schemaTable =
connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,
new object[] { null, null, null, "TABLE" });
return schemaTable;
}
}
2 ответа
GetOleDbSchemaTable
с OleDbSchemaGuid.Tables
поле возвращает таблицы (включая имена представлений), определенные внутри каталога, а массив объектов ссылается на эту конструкцию:
new object { "table_catalog", "table_schema", "table_name", "table_type" }
OleDbSchemaGuid
состоит из 3 полей: OleDbSchemaGuid.Tables
, OleDbSchemaGuid.Columns
а также OleDbSchemaGuid.Primary_Keys
, Чтобы получить свойства таблицы, вы можете использовать OleDbSchemaGuid.Columns
поле:
connection.GetOleDbSchemaTable(OleDbSchemaGuid.Columns,
new object[] { "table_catalog", "table_schema", "table_name", "column_name" });
Поскольку вы хотите найти схему таблицы, установите второй аргумент и оставьте другие аргументы в качестве значения NULL:
var columns = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Columns,
new object[] { null, "schema_name", null, null });
Если вы хотите получить свойства как по схеме таблицы, так и по имени таблицы, используйте также третий аргумент:
var columns = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Columns,
new object[] { null, "schema_name", "table_name", null });
Вы находитесь в правильном направлении. Для каждой таблицы вы можете снова вызвать GetOleDbSchemaTable, но в этом случае с другими параметрами:
DataTable schemaColumns =
connection.GetOleDbSchemaTable(OleDbSchemaGuid.Columns,
new object[] { null, "MyTableName", null, null });
С помощью OleDbSchemaGuid вы можете указать, какую схему извлекать, а с помощью фильтров указать схему таблицы.
В этой ссылке вы можете найти информацию о том, как фильтровать, например, по имени таблицы, чтобы получить информацию о столбцах. Ограничения - это массив, и вы должны поместить значение фильтра в соответствующее положение.