Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

C# OleDB mdb определить ключевые столбцы

842
28 февраля 2010 года
sigmov
301 / / 16.09.2008
Имеется реляционная аксессовская БД, требуется открыть ее для произвольного редактирование.

Проблема следующая:
Не могу получить список ключевых столбцов для таблицы!!!(ключей)

Как я это пытаюсь сделать:
Код:
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();                                                        //показать схему
        }


Результат таков, что в таблице не обнаружено ни ключей(IsKey) ни "уникальных"(IsUniq) значений (((((
8.2K
28 февраля 2010 года
bagie2
299 / / 26.10.2008
вот что-нить типа такого может. сработает для всех таблиц.
 
Код:
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);
            }




а 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" });
            }
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог