我在使用OLEDB时,执行删除操作,使用了oledbCommandbuilder ,删除操作的过程如下 :
  private void toolStripButton2_Click(object sender, EventArgs e)
        {
            if (this.dataGridView1.Rows.Count == 0) return;
            if (MessageBox.Show("你真的要删除该行数据吗?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
            {
                try
                {
                    int row = this.dataGridView1.CurrentCell.RowIndex;
                    this.mdb.ds.Tables[0].Rows[row].Delete();
                    this.mdb.da.Update(this.mdb.ds.GetChanges());
                    this.mdb.ds.Clear();
                    this.mdb.da.Fill(this.mdb.ds);
                    this.mdb.dc.Close();
                }
                catch (Exception ee)
                {
                    MessageBox.Show(ee.ToString());
                    this.mdb.ds.Clear();
                    this.mdb.da.Fill(this.mdb.ds);
                    this.mdb.dc.Close();
                }
            }

        }
在正常情况下能够正确地删除,但是当我把DataGridView中的编号一列(自动编号)的表头点一下,让他以该列重新排序以后,再执行删除,那么他就始终是删除第一行的数据,请高手指点。
在删除后之所以我要重新装入数据,是因为不重新装入就只能执行一次操作,后面再操作就违背了并发原则。