以下代码:
string sql="SELECT * FROM table1 WHERE aaa='xxx";
da=new OleDbDataAdapter(sql,Db._orclConnection);
da.Fill(dataset1,"table1");
DataRow NewRow=dataset1.Tables["table1"].NewRow();
NewRow["aaa"]="20";
NewRow["bbb"]="1edw";
NewRow["ccc"]="12d";
dataset1.Tables["table1"].Rows.Add(NewRow);
da.Update(dataset1,"table1");为何出错:未处理的“System.InvalidOperationException”类型的异常出现在 system.data.dll 中。其他信息: 当传递具有新行的 DataRow 集合时,更新要求有效的 InsertCommand。

解决方案 »

  1.   

    如果 DataTable 映射到单个数据库表或从单个数据库表生成,则可以利用 CommandBuilder 对象自动生成 DataAdapter 的 DeleteCommand、InsertCommand 和 UpdateCommand。为了自动生成命令,必须设置 SelectCommand 属性,这是最低的要求。SelectCommand 所检索的表架构确定自动生成的 INSERT、UPDATE 和 DELETE 语句的语法。你要么设置selectcommand 用commandbuilder,要么写明InsertCommand