假如绑定
objDataSet.AcceptChanges(); 保存
objDataSet.RejectChanges(); 放弃

解决方案 »

  1.   

    你可以在SQL Server语句中实现你想要的这个功能
      

  2.   

    利用SqlDataAdapter提供的update功能,如:
    SqlDataAdapter da=new SqlDataAdapter(selectcmd,con);
    SqlCommandBuilder cb=new SqlCommandBuilder(da);
    da.Update(dt);
      

  3.   

    //参照我下面的代码,可以批量更新,“放弃”功能没写过,不过通过重新绑定一次数据应该可以实现。
    数据适配器和数据集的定义以及dataGrid的数据绑定:
    OleDbConnection conn;
    DataSet ds;
    OleDbDataAdapter da;
    string Src="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Invoice.mdb";
    string Invoice="SELECT 购货单位,日期,货名及规格,单位,数量,单价,金额,已报销,图片名称,备注,编号 FROM invoice";
    conn=new OleDbConnection(Src);
    da=new OleDbDataAdapter(Invoice,conn);
    ds=new DataSet();
    da.Fill(ds,"invoice");
    dataGridInvoice.SetDataBinding(ds,"invoice");//特别要注意下面代码中的注释,已经调试通过
    private void UpdateInvoice()
    {
    string Upt="UPDATE invoice SET 购货单位=@购货单位,日期=@日期,货名及规格=@货名及规格,单位=@单位,数量=@数量,单价=@单价,金额=@金额,已报销=@已报销,图片名称=@图片名称,备注=@备注 WHERE 编号=@编号";
    da.UpdateCommand=new OleDbCommand(Upt,conn);
    OleDbParameter Para;
    //下面这些参数添加的先后顺序一定要和SQL语句中的顺序一致,其中WHERE子句中的参数位于最后,也就是要严格一致才行!
    Para=da.UpdateCommand.Parameters.Add("@购货单位",OleDbType.Char);
    Para.SourceColumn="购货单位";
    Para.SourceVersion=DataRowVersion.Current;
    Para=da.UpdateCommand.Parameters.Add("@日期",OleDbType.Char);
    Para.SourceColumn="日期";
    Para.SourceVersion=DataRowVersion.Current;
    Para=da.UpdateCommand.Parameters.Add("@货名及规格",OleDbType.Char);
    Para.SourceColumn="货名及规格";
    Para.SourceVersion=DataRowVersion.Current;
    Para=da.UpdateCommand.Parameters.Add("@单位",OleDbType.Char);
    Para.SourceColumn="单位";
    Para.SourceVersion=DataRowVersion.Current;
    Para=da.UpdateCommand.Parameters.Add("@数量",OleDbType.Char);
    Para.SourceColumn="数量";
    Para.SourceVersion=DataRowVersion.Original;
    Para=da.UpdateCommand.Parameters.Add("@单价",OleDbType.Char);
    Para.SourceColumn="单价";
    Para.SourceVersion=DataRowVersion.Original;
    Para=da.UpdateCommand.Parameters.Add("@金额",OleDbType.Char);
    Para.SourceColumn="金额";
    Para.SourceVersion=DataRowVersion.Original;
    Para=da.UpdateCommand.Parameters.Add("@已报销",OleDbType.Char);
    Para.SourceColumn="已报销";
    Para.SourceVersion=DataRowVersion.Current;
    Para=da.UpdateCommand.Parameters.Add("@图片名称",OleDbType.Char);
    Para.SourceColumn="图片名称";
    Para.SourceVersion=DataRowVersion.Current;
    Para=da.UpdateCommand.Parameters.Add("@备注",OleDbType.Char);
    Para.SourceColumn="备注";
    Para.SourceVersion=DataRowVersion.Current;
    Para=da.UpdateCommand.Parameters.Add("@编号",OleDbType.BigInt);
    Para.SourceColumn="编号";
    Para.SourceVersion=DataRowVersion.Original;
    if(MessageBox.Show("你真的要保存对数据库所做的更改吗?","确认!",MessageBoxButtons.OKCancel,MessageBoxIcon.Question)==DialogResult.OK)
    {
    da.Update(ds,"invoice");
    dataGridInvoice.SetDataBinding(ds,"invoice");
    }
    }//一定要有WHERE字句,还有就是WHERE字句中的字段在后面的Para=da.UpdateCommand.Parameters.Add()的时候也要放在所有字段的最后,否则即便更新成功结果也不对。