我想在datagrid上完成删除,插入等功能后
然后把修改写回数据库,我新添一行没有问题,但是删除一行后adapter.update(dataset)后
就报错了。我使用的是commandbuilder
代码是:
...
ds=new DataSet();
string sql="select  OccupationID,Occupationname from t_Occupation ";//datagrid 上显示的内容,Occupationname是主键 
adapter=new OleDbDataAdapter();
adapter.SelectCommand=new OleDbCommand(sql,con);
OleDbCommandBuilder custCB = new OleDbCommandBuilder(adapter);
adapter.Fill(ds,"occupation");
...
//
我在datagrid上新增一行后
执行this.adapter.Update(ds,"occupation");后正确,修改写回数据库
但是当在datagrid上删除一行后就报错了:
未处理的“System.InvalidOperationException”类型的异常出现在 system.data.dll 中。
其他信息: 对于不返回任何键列信息的SelectCommand 不支持 DeleteCommand 的动态 SQL 生成。请指导!

解决方案 »

  1.   

    保证有主键信息,在select语句中添加主键;
    保证OleDbDataAdapter有deleteCommand字符串;从楼主的"对于不返回任何键列信息的SelectCommand 不支持 DeleteCommand 的动态 SQL 生成。
    "好象是没有赋 DeleteCommand 字符串
      

  2.   

    为什么要用update? 不是有delete方法吗?
      

  3.   

    给你的表设置一个主键就可以了.因为你用的OleDbCommandBuilder自动生成DeleteCommand,UpdateCommand,InsertCommand时表必须有主键
      

  4.   

    我建表的时候有主键呀
    而且我也用select选出来了