Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在C中获取Ms Access表的主键#_C#_Ms Access_Primary Key - Fatal编程技术网

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

C# 如何在C中获取Ms Access表的主键#,c#,ms-access,primary-key,C#,Ms Access,Primary Key,在给定连接和表名的情况下,我需要一个或多个字段(只要字段的名称就可以)来构成Microsoft Access表的主键 好吧,我想我找到了。它应该适用于所有oledb,如下所示: public static List<string> getKeyNames(String tableName, DbConnection conn) { var returnList = new List<string>(); DataTable my

在给定连接和表名的情况下,我需要一个或多个字段(只要字段的名称就可以)来构成Microsoft Access表的主键

好吧,我想我找到了。它应该适用于所有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;
    }
publicstaticlist getKeyNames(stringtablename,DbConnection-conn)
{
var returnList=新列表();
数据表mySchema=(连接为OleDbConnection)。
GetOleDbSchemaTable(OleDbSchemaGuid.Primary_键,
新对象[]{null,null,tableName});
//下面是数字“3”的冗长形式:-)
int columnOrdinalForName=mySchema.Columns[“COLUMN_NAME”].Ordinal;
foreach(mySchema.Rows中的数据行r)
{
添加(r.ItemArray[columnOrdinalForName].ToString());
}
退货清单;
}

好的,我想我找到了。它应该适用于所有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;
    }
publicstaticlist getKeyNames(stringtablename,DbConnection-conn)
{
var returnList=新列表();
数据表mySchema=(连接为OleDbConnection)。
GetOleDbSchemaTable(OleDbSchemaGuid.Primary_键,
新对象[]{null,null,tableName});
//下面是数字“3”的冗长形式:-)
int columnOrdinalForName=mySchema.Columns[“COLUMN_NAME”].Ordinal;
foreach(mySchema.Rows中的数据行r)
{
添加(r.ItemArray[columnOrdinalForName].ToString());
}
退货清单;
}

你帮了我很多忙。我无法理解为什么一个如此有用的解决方案没有我能找到的文档化用法。你帮了我很多忙。我无法理解为什么一个如此有用的解决方案没有我能找到的文档化用法。