很多情形下我们需要知道表的主键是什么在ADONet中提供了DataTable可以映射数据库的表于是便可以利用DataTable的属性PrimaryKey它是DataColumn[] 类型是一个数组我们可以使用如下的代码 DataColumn[] colscols = TablePrimaryKey//注意不是cols是DataColumn数组不是DataColumn变量这样做主要是为了处理联合主键的问题 for(int i = i < colsLength i++) { MessageBoxShow(cols[i]ColumnName)} 按理这个问题就已经解决了但是colsLength却是原来在默认的情况下填充DataTable时并没有从数据库中取的主键的信息如何获得主键呢?经过研究发现在填充Dataset的时候可以使用DataAdapter的MissingSchemaAction属性帮助我们解决这个问题于是有如下的代码 //使用DataAdapter填充DataTable dataadapterMissingSchemaAction = MissingSchemaActionAddWithKeydataadapterFill(Table) DataColumn[] colscols = TablePrimaryKey//注意不是cols是DataColumn数组不是DataColumn变量这样做主要是为了处理联合主键的问题 for(int i = i < colsLength i++) { MessageBoxShow(cols[i]ColumnName)} 这样我们便可以如愿以偿了MissingSchemaAction属性是确定现有Dataset(或DataTable)架构与传入数据不匹配时需要执行的操作MissingSchemaActionAddWithKey是枚举值它的作用是添加必需的列和主键信息以完成架构利用它用户可以在每个 DataTable上显式设置主键约束 |