Oracle.DataAccess.Client.OracleCommand select = new Oracle.DataAccess.Client.OracleCommand(@"SELECT JQDM, JQMC, KKFLAG, FLAG FROM FK_EIP.RL_JQCSB",conn);
Oracle.DataAccess.Client.OracleCommand update = new Oracle.DataAccess.Client.OracleCommand(@"UPDATE FK_EIP.RL_JQCSB SET JQDM = :JQDM, JQMC = :JQMC, KKFLAG = :KKFLAG, FLAG = :FLAG WHERE JQDM = :Original_JQDM",conn);
Oracle.DataAccess.Client.OracleCommand insert = new Oracle.DataAccess.Client.OracleCommand(@"INSERT INTO FK_EIP.RL_JQCSB (JQDM, JQMC, KKFLAG, FLAG) VALUES ( :JQDM,:JQMC,:KKFLAG, :FLAG :JQDM)",conn);
Oracle.DataAccess.Client.OracleCommand delete = new Oracle.DataAccess.Client.OracleCommand("DELETE FROM FK_EIP.RL_JQCSB WHERE  JQDM   = :JQDM",conn);update.Parameters.Add(new Oracle.DataAccess.Client.OracleParameter(":Original_JQDM", Oracle.DataAccess.Client.OracleDbType.NVarchar2,10,System.Data.ParameterDirection.Input,false,((System.Byte)(0)),((System.Byte)(0)),"JQDM",System.Data.DataRowVersion.Original,null));//delete 和 insert 添加的原值参数与此相同,其它添加参数略去。。da.SelectCommand = select;
da.UpdateCommand = update;
da.InsertCommand = insert;
da.DeleteCommand = delete;da.Update(ds,tblName.Text);
这样的cmd绑定到da上后可以进行新增和删除,就是不能进行修改操作,总是报并发的错误,提示“影响0行记录”以上代码应该没有问题,在添加和删除grid内容后调用Update()都成功,但就是修改数据后调用会报错的
------------------------------------------------------------------------------------Oracle.DataAccess.Client.OracleCommand update = new Oracle.DataAccess.Client.OracleCommand(@"UPDATE FK_EIP.RL_JQCSB SET JQMC = '111', KKFLAG = '111', FLAG = '1' WHERE JQDM = :Original_JQDM",conn);这样的格式倒是可以将已经产生变化的行中的数据全修改成‘111’类似的值,可改成原来参数赋值形式后又不认了。。头大啊!!!

解决方案 »

  1.   

    不是吧,ODP很好用的东西,竟然没有人用过的吗?
      

  2.   

    da.Update(ds,tblName.Text);改为da.Update(ds.GetChanges(),tblName.Text);
      

  3.   

    首先谢回复,改了还是不行估计是Update()在取Original值的地方出的问题UPDATE FK_EIP.RL_JQCSB SET JQMC = ‘111’,JQMC = '111', KKFLAG = '111', FLAG = '1' WHERE JQDM = :Original_JQDM"
    这样的格式可以又证明:Original_JQDM这个参数取值没有问题
    换参数格式又不能修改。
      

  4.   

    DataAdapter在进行update时,是根据rowstate中的状态来决定的。所以使用dataset更新数据库前不要调用acceptchanges。
    其二,最好作用commandbuilder来生成command.
    具体的操作应参考odp.net的参考。