有谁知道当用SqlDataAdapter.Update()更新数据库时,抛出的异常(并发冲突:UpdateCommand 影响 0 个记录)是如何产生的? http://community.csdn.net/Expert/topic/3273/3273102.xml?temp=.6940424 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://blog.csdn.net/zhpsam109/archive/2004/08/29/87934.aspx where 后面的参数写法参考:Com.Parameters.Add(new OleDbParameter("@p1",System.Data.OleDb.OleDbType.Decimal));Com.Parameters[0].SourceColumn="AMOUNTSUM";Com.Parameters[0].SourceVersion=DataRowVersion.Original;where前面的参数:Com.Parameters.Add(new OleDbParameter("@p",System.Data.OleDb.OleDbType.VarChar));Com.Parameters[1].SourceColumn="paymonth";Com.Parameters[1].SourceVersion=DataRowVersion.Current; 我也曾经遇到这样的问题,祝你早日解决!我的MSN:[email protected]大家一起进步! 1.如果你的select 命令中包含Primary Key,那么,你可以使用我在blog中说的填充架构的方法!2.如果你的select不包含Primary Key,那么,你不能使用CommandBuilder来为适配器产生updateCommand等,你可以用我在blog中说的填充架构的方法!另外,你也可以使用为适配器增加表映射的方法! 这个方法可以使你利用从一个适配器(da1)填充的数据集(ds1)利用令一个适配器(da2)的update方法更新到数据源! 我没有用CommandBuilder就是给UpdateCommand添加SQL来实现得,但是就是出这个问题。还有就是我如果把数据库中的ccc这个列删了,然后代码里面做相应修改,就可以正常通过,我真的很迷惑。主键也加了 但是还是不行 你要把where 中的那个 (ccc=@ccc_) 拿掉才行。 你想想你将ccc 重新都赋值成 DateTime.Now.ToLongTimeString(); 它还会等于原来的值吗? 不等的话, 找不到合适的row, 当然只有更新0条了。 一般来将那个where后面加的都是主键。 还有别的用法就是在乐观锁定。 会加一个额外的字段就想你这种用法, 只不过程序要显示的捕捉这个error, 用来表示别人有更新 To bruce007(蜀人):照你说的我改了,确实通过了。但是我加上dt.Rows[0]["aaa"] = 1;程序还是运行正确。照你说的aaa和ccc一样的啊,在where前面和后面都有,而且都是重新赋值啊。 sqlCommandUpdate.Parameters["@ccc_"].SourceVersion = DataRowVersion.Original;使用的是original值,但是dt.Rows[0]["ccc"] = DateTime.Now.ToLongTimeString();用的是current值,update时会检查datarowversion;我认为你应该;sqlCommandUpdate.Parameters["@ccc_"].SourceVersion = DataRowVersion.CURRENT; c#textbox输入框自动提示,但加载的数据很多,程序运行很慢 richtexbox怎么能设置透明背景色? 关于登陆页面比较小白的问题 求:MDI子窗体设置的简单方法 c#做欢迎画面的一个疑问 存储过程中怎样触发某个应用程序 如何获得系统桌面的路径 新开一个界面设计群,愿爱好者请进!!! 【在线等】请教关于异步传输的理解 请教各位高手:如何从模式对话框返回参数? 关于邮槽通信,在线等,解决后立刻散分。 关于XML流的读写问题
Com.Parameters[0].SourceColumn="AMOUNTSUM";
Com.Parameters[0].SourceVersion=DataRowVersion.Original;where前面的参数:
Com.Parameters.Add(new OleDbParameter("@p",System.Data.OleDb.OleDbType.VarChar));
Com.Parameters[1].SourceColumn="paymonth";
Com.Parameters[1].SourceVersion=DataRowVersion.Current;
就是给UpdateCommand添加SQL来实现得,但是就是出这个问题。
还有就是我如果把数据库中的ccc这个列删了,然后代码里面做相应修改,就可以正常通过,我真的很迷惑。主键也加了 但是还是不行
照你说的我改了,确实通过了。
但是我加上
dt.Rows[0]["aaa"] = 1;
程序还是运行正确。照你说的aaa和ccc一样的啊,在where前面和后面都有,而且都是重新赋值啊。
使用的是original值,但是dt.Rows[0]["ccc"] = DateTime.Now.ToLongTimeString();
用的是current值,update时会检查datarowversion;
我认为你应该;
sqlCommandUpdate.Parameters["@ccc_"].SourceVersion = DataRowVersion.CURRENT;