Как получить первичный ключ таблицы доступа Ms в C # - PullRequest
1 голос
/ 14 мая 2009

Мне нужно поле или поля (подойдет только имя поля), которые образуют первичный ключ таблицы Microsoft Access, с учетом соединения и tableName.

1 Ответ

4 голосов
/ 14 мая 2009

хорошо, я думаю, что нашел это. Это должно работать для всех Oledb и STH. как:

public static List<string> getKeyNames(String tableName, DbConnection conn)
    {
        var returnList = new List<string>();


        DataTable mySchema = (conn as OleDbConnection).
            GetOleDbSchemaTable(OleDbSchemaGuid.Primary_Keys,
                                new Object[] {null, null, tableName});


        // following is a lengthy form of the number '3' :-)
        int columnOrdinalForName = mySchema.Columns["COLUMN_NAME"].Ordinal;

        foreach (DataRow r in mySchema.Rows)
        {
            returnList.Add(r.ItemArray[columnOrdinalForName].ToString());
        }

        return returnList;
    }
...