AppDomain.CurrentDomain.SetData("DataDirectory", "d:\\databases\\");
DataTable PrimaryKeys = new DataTable();
using (OleDbConnection connection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|Database.mdb"))
{
connection.Open();
PrimaryKeys = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Primary_Keys, null);
}
C# OleDB mdb определить ключевые столбцы
Проблема следующая:
Не могу получить список ключевых столбцов для таблицы!!!(ключей)
Как я это пытаюсь сделать:
Код:
static void Main(string[] args)
{
OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db.mdb");
conn.Open(); //открыть соединение
OleDbCommand cmd = new OleDbCommand("SELECT * from certificates",conn); //запросить таблицу
var Schema = cmd.ExecuteReader().GetSchemaTable(); //получить схему таблицы
conn.Close(); //закрыть соединение
TabelsNames TN = new TabelsNames();
TN.dataGridView1.DataSource = Schema;
TN.ShowDialog(); //показать схему
}
{
OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db.mdb");
conn.Open(); //открыть соединение
OleDbCommand cmd = new OleDbCommand("SELECT * from certificates",conn); //запросить таблицу
var Schema = cmd.ExecuteReader().GetSchemaTable(); //получить схему таблицы
conn.Close(); //закрыть соединение
TabelsNames TN = new TabelsNames();
TN.dataGridView1.DataSource = Schema;
TN.ShowDialog(); //показать схему
}
Результат таков, что в таблице не обнаружено ни ключей(IsKey) ни "уникальных"(IsUniq) значений (((((
Код:
а OleDbSchemaGuid.Indexes возвращает табличку, где есть все индексы. там поле есть PRIMARY, UNIQUE и т.д. ну и сразу отфильтруем что нам надо взять только table1
Код:
DataTable Indexes = new DataTable();
using (OleDbConnection connection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|Database.mdb"))
{
connection.Open();
Indexes = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Indexes, new object[] { null, null, null, null, "table1" });
}
using (OleDbConnection connection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|Database.mdb"))
{
connection.Open();
Indexes = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Indexes, new object[] { null, null, null, null, "table1" });
}