如下的语句,执行后报如下错误“违反并发性: UpdateCommand 影响了预期 1 条记录中的 0 条”。 在 row = da.Update(dt); 这句话报错! 同样的如下代码,我使用sqlserver 以及 Oracle 数据库,测试执行正常。 不清楚针对Access 数据库会有哪些细微的差别? OleDbDataAdapter da;
DataTable dt;
private void button1_Click(object sender, EventArgs e) //查询数据
{
string strSQL = "select KEY_ID, SHU_NAME from A01_TUSHU where 1=1";
da = new OleDbDataAdapter(strSQL, conn);
dt = new DataTable();
da.Fill(dt);
dataGridView1.DataSource = dt;
dataGridView1.AllowUserToAddRows = false;
dataGridView1.Columns[0].ReadOnly = true; //第一列是主键,不修改
dataGridView1.Columns[1].ReadOnly = false; //修改第二列的内容
} private void button2_Click(object sender, EventArgs e) //修改数据
{
int row = 0;
string strSQL = "update A01_TUSHU set SHU_NAME=@SHU_NAME where KEY_ID=@KEY_ID";
da.UpdateCommand = new OleDbCommand (strSQL, conn);
OleDbParameter KEY_ID = da.UpdateCommand.Parameters.Add("@KEY_ID", OleDbType.VarChar ,20,"KEY_ID");
KEY_ID.SourceVersion = DataRowVersion.Original; da.UpdateCommand.Parameters.Add("@SHU_NAME", OleDbType.VarChar, 50, "SHU_NAME");
da.UpdateCommand.UpdatedRowSource = UpdateRowSource.None; //这句话不清楚起什么作用 MessageBox.Show(strSQL); //怎样调试显示出来 实际执行的语句?
row = da.Update(dt);
MessageBox.Show("成功更新行数: " + row.ToString(), "提示信息");
}
DataTable dt;
private void button1_Click(object sender, EventArgs e) //查询数据
{
string strSQL = "select KEY_ID, SHU_NAME from A01_TUSHU where 1=1";
da = new OleDbDataAdapter(strSQL, conn);
dt = new DataTable();
da.Fill(dt);
dataGridView1.DataSource = dt;
dataGridView1.AllowUserToAddRows = false;
dataGridView1.Columns[0].ReadOnly = true; //第一列是主键,不修改
dataGridView1.Columns[1].ReadOnly = false; //修改第二列的内容
} private void button2_Click(object sender, EventArgs e) //修改数据
{
int row = 0;
string strSQL = "update A01_TUSHU set SHU_NAME=@SHU_NAME where KEY_ID=@KEY_ID";
da.UpdateCommand = new OleDbCommand (strSQL, conn);
OleDbParameter KEY_ID = da.UpdateCommand.Parameters.Add("@KEY_ID", OleDbType.VarChar ,20,"KEY_ID");
KEY_ID.SourceVersion = DataRowVersion.Original; da.UpdateCommand.Parameters.Add("@SHU_NAME", OleDbType.VarChar, 50, "SHU_NAME");
da.UpdateCommand.UpdatedRowSource = UpdateRowSource.None; //这句话不清楚起什么作用 MessageBox.Show(strSQL); //怎样调试显示出来 实际执行的语句?
row = da.Update(dt);
MessageBox.Show("成功更新行数: " + row.ToString(), "提示信息");
}
DeleteCommand的问题:检查是否含有自动编号字段
UpdateCommand的问题:检查更新的字段的原始值是否为空值
DataSet ds = new DataSet();
SqlDataAdapter sda;SqlCommandBuilder scb = new SqlCommandBuilder(sda);
sda.Update(ds);
this.dataGridView1.DataSource = ds.Tables[0];