今天用Access做数据库,调用OleDbDataAdapter.Update方法修改数据表内容,
老是报错,并发冲突: UpdateCommand 影响 0 个记录。
代码:
Code
1OleDbDataAdapter ada = new OleDbDataAdapter("select Column1,Column2,ColumnID from TableName", conn);
2 DataTable table = new DataTable();
3 ada.Fill(table);
4 foreach (DataRow row in table.Rows)
5 {
6 row["Column1"] = DateTime.Now.ToString("yyyy-MM-dd");
7 row["Column2"] = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
8 }
9 OleDbCommand updateCommand = new OleDbCommand("update TableName set Column1=@Column1,Column2=@Column2 where ColumnID=@ColumnID",conn);
10 updateCommand.Parameters.Add("@Column1",OleDbType.VarChar,50,"Column1");
11 updateCommand.Parameters.Add("@ColumnID",OleDbType.VarChar,50,"ColumnID");
12 updateCommand.Parameters.Add("@Column2",OleDbType.VarChar,50,"Column2");
13 ada.UpdateCommand = updateCommand;
14 ada.Update(table); 调试检查了几次都没解决,
最后把代码
//updateCommand.Parameters.Add("@Column2",OleDbType.VarChar,50,"Column2");
注释了,SQL改成update TableName set Column1=@Column1 where ColumnID=@ColumnID
再调试,既然成功了。
原来参数还要按顺序设置的。(以前用System.Data.SqlClient.SqlCommand参数是可以不按顺序的)
把参数设置改成
updateCommand.Parameters.Add("@Column1",OleDbType.VarChar,50,"Column1");
updateCommand.Parameters.Add("@Column2",OleDbType.VarChar,50,"Column2");
updateCommand.Parameters.Add("@ColumnID",OleDbType.VarChar,50,"ColumnID");
这样就OK了。