本帖最后由 qlz37238 于 2011-02-13 15:47:25 编辑

解决方案 »

  1.   

    为了支持自动生成指定的SelectCommand必须包含主键或唯一性列
    DataAdapter   显式设置为   UpdateCommand
      

  2.   

    DataTable.PrimaryKey 属性,获取或设置充当数据表主键的列的数组。
    为了识别表中的记录,表的主键必须唯一。表的主键还可以由两列或多列组成。这在单列无法包含足够的唯一值时发生。例如,两列主键可由“FirstName”和“LastName”列组成。因为主键可由多列组成,所以 PrimaryKey 属性由 DataColumn 对象的数组组成。
      

  3.   

    为了识别表中的记录,表的主键必须唯一。表的主键还可以由两列或多列组成。这在单列无法包含足够的唯一值时发生。——这个说的很清楚,就是要保证唯一性,一般是选择一列的,当如果一列无法包含足够的唯一值时就可以由多个列组成。
    看看你的
                DataColumn[] key = new DataColumn[] { ds.Tables[0].Columns[0] };
                ds.Tables[0].PrimaryKey = key;
    是不是有问题?
      

  4.   


    也就是说代码可以写成这样?  DataColumn[] key = new DataColumn[] { ds.Tables[0].Columns[0],ds.Tables[0].Columns[1] };
      ds.Tables[0].PrimaryKey = key;