问题
I need the field or fields (just the name of the field will do) that form the primary key of a Microsoft Access Table, given a connection and a tableName.
回答1:
ok, I guess I found it. It should work for all oledb and is sth. like :
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;
}
来源:https://stackoverflow.com/questions/862749/how-to-get-the-primary-key-of-an-ms-access-table-in-c-sharp