如何在C#中获取Ms Access表的主键

Pet*_*ter 1 c# ms-access primary-key

我需要一个或多个字段(只是字段的名称),它们构成 Microsoft Access 表的主键,给定一个连接和一个 tableName。

Pet*_*ter 5

好吧,我想我找到了。它应该适用于所有 oledb 并且是…… 喜欢 :

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;
    }
Run Code Online (Sandbox Code Playgroud)