我想将DataTable用Update的方式更新到数据库,那么DataTable中必须有主键吗?我的DataTable结构是从数据库中取出来的,数据是从界面上写入到这个DataTable中的,因为是动态的,所有用SQL语句一条一条更新的话就不方便了,谢谢解答!

解决方案 »

  1.   

    要有主键, 否则没根据要更新哪条记录了dataAdapter 可以接收一个datatable, 做更新操作需要你提供 insert, update, delete command,究竟是不是真的一次提交, 还是驱动内部循环,
    要看后端数据库是否支持, 以及 ado.net provider 是如何实现的了,
    至少在 DataTable和 Adapter 上, 看起来是一次的.
      

  2.   

    需要主键,DataTable列有状态,也就是缓冲区,这个是DataTable内部机制。整个过程,需要DataAdapter相关的操作。数据量不大,可以考虑这么操作。具体数据是否支持回滚,不清楚。 
      

  3.   

    其实你可以这么做:
    把数据填充到datagridview:dataset.表名.clear();
    sqldataadapter.fill(dataset.表名);
    datagridview.datasource=dataset.表名;
    进行数据更新:你可以直接在datagridview进行修改操作,并结果更新到数据源
    sqldataadapter.update(dataset.表名);用到sqldataadapter的fill,update这个两个方法