当前位置:编程学习 > C#/ASP.NET >>

违反并发性: UpdateCommand 影响了预期 1 条记录中的 0 条。

保存入数据库代码如下,出现如题问题,有哪些可能?
        public bool ExecuteBatchCommandBySQL(DataTable dt, string sSelectSql)
        {
            OpenCon();
            SqlDataAdapter sd = new SqlDataAdapter();
            sd.SelectCommand = new SqlCommand(sSelectSql, con);
            SqlCommandBuilder scb = new SqlCommandBuilder(sd);
            try
            {
                lock (this)
                {
                    sd.Update(dt);   //此处出错
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return true;
        }
--------------------编程问答-------------------- google 关键字 sql 违反并发性 --------------------编程问答--------------------
引用 1 楼 symbol_bc 的回复:
google 关键字 sql 违反并发性


UpdateCommand的问题:检查更新的字段的原始值是否为空值(原始空值更新时可能会引发此异常)。

除了这一点没有别的可能?
我的原始值不为null也出现UpdateCommand的问题 --------------------编程问答-------------------- 数据的操作不是单单的只修改或只删除,是在DataGridView界面任意作增、删、改操作,最后点保存按钮批量保存到数据库。

是一次做了多种操作后,保存时才出现如上问题,要怎么解决? --------------------编程问答-------------------- UPUPUP --------------------编程问答--------------------
引用 3 楼 nightmaple1 的回复:
数据的操作不是单单的只修改或只删除,是在DataGridView界面任意作增、删、改操作,最后点保存按钮批量保存到数据库。

是一次做了多种操作后,保存时才出现如上问题,要怎么解决?


数据库中的主键为自动增长列,在网上查了很多资料还是无法解决。

那我要实现批量更新,除了以上方法,还有没有其它方法???
最重要的是数据不能出错,界面不能报错。 --------------------编程问答-------------------- 更新是否涉及多条数据

ds.RejectChanges();
ds.Clear();
--------------------编程问答--------------------
引用 6 楼 bourbon1795 的回复:
更新是否涉及多条数据

ds.RejectChanges();
ds.Clear();


是的,在DataGridView界面任意作增、删、改操作后一次保存。
而且数据库中的主键为自动增长列。

有什么好的实现方法吗?
--------------------编程问答-------------------- 别涉及多个数据,这样不好。如果多条记录之间有关联怎么办?所以一次就只让他操作一条。 --------------------编程问答-------------------- 检查是否设有主键。  
adapter实现数据更新  
UpdateCommand的问题:检查更新的字段的原始值是否为空值(原始空值更新时可能会引发此异常)  
int型设置为 0 
 
--------------------编程问答--------------------
引用楼主 nightmaple1 的回复:
保存入数据库代码如下,出现如题问题,有哪些可能?

C# code
          catch (Exception ex)
            {
                throw ex;
            }
……


throw用错位置了。
要try还有什么用。

this是什么,lock要做什么?把this的代码贴出来。
如果是多线程程序,多建几个connection,什么也不要lock.




--------------------编程问答--------------------
引用 5 楼 nightmaple 的回复:
数据库中的主键为自动增长列,在网上查了很多资料还是无法解决。

那我要实现批量更新,除了以上方法,还有没有其它方法???
最重要的是数据不能出错,……

错误不可能不出现,加一些容错功能。
发生 错误时,暂停一段(可能是几个毫秒)。再试一次。

有些错误是难免的,象 字段不为空,你设置了空值。
--------------------编程问答-------------------- 要更新的数据原值与数据库中的不一致导致 --------------------编程问答--------------------
引用 8 楼 bourbon1795 的回复:
别涉及多个数据,这样不好。如果多条记录之间有关联怎么办?所以一次就只让他操作一条。


是单表的数据,数据与数据之间几乎没联系。 --------------------编程问答--------------------
引用 9 楼 wuyq11 的回复:
检查是否设有主键。  
adapter实现数据更新  
UpdateCommand的问题:检查更新的字段的原始值是否为空值(原始空值更新时可能会引发此异常)  
int型设置为 0


这两点都检查过了,是没问题的。 --------------------编程问答--------------------
引用 12 楼 colorall 的回复:
要更新的数据原值与数据库中的不一致导致


当然是不一致的,一致的话就不用更新啦

我的主键是自动增长,这有问题吗? --------------------编程问答--------------------
引用 15 楼 nightmaple 的回复:
引用 12 楼 colorall 的回复:
要更新的数据原值与数据库中的不一致导致


当然是不一致的,一致的话就不用更新啦

我的主键是自动增长,这有问题吗?

主键增长,会引发这个错误 --------------------编程问答-------------------- 我也正在困惑这个问题
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,