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

点击删除按钮时,提示违反并发性: DeleteCommand 影响了预期 1 条记录中的 0 条。

  // 删除STAFF_DICT
                string filter = "COMMUNITY_CODE = " + SQL.SqlConvert(GVars.CommunityCode)  
                             + " AND EMP_NO = " + SQL.SqlConvert(txtEmpNo.Text.Trim());
                DataRow[] drFind = dsStaffDict.Tables[0].Select(filter);
                if (drFind.Length > 0)
                {
                    drFind[0].Delete();
                }
                
                // 删除USERS
                if (userName.Length > 0)
                {
                    filter = "COMMUNITY_CODE = " + SQL.SqlConvert(GVars.CommunityCode)  
                             + " AND USER_NAME = " + SQL.SqlConvert(userName);
                    drFind = dsUsers.Tables[0].Select(filter);
                    if (drFind.Length > 0)
                    {
                        drFind[0].Delete();
                    }
                }
                
                // 删除USER_ROLE
                filter = "COMMUNITY_CODE = " + SQL.SqlConvert(GVars.CommunityCode)  
                        + " AND USER_NAME = " + SQL.SqlConvert(userName);
                drFind = dsUserRole.Tables[0].Select(filter);
                if (drFind.Length > 0)
                {
                    drFind[0].Delete();
                }
                
                // 更新DB
                dbInfo.SaveTablesData(dsStaffDict, dsUsers, dsUserRole);
                
                dsStaffDict.AcceptChanges();
                dsUsers.AcceptChanges();
                dsUserRole.AcceptChanges(); --------------------编程问答-------------------- update执行语句要在acceptchanges之前调用。
更新数据集的时候,前面的记录更新时是否修改了后面的记录,后面的记录再来更新时,导致出错。 
检查是否设有主键。 
检查更新的字段的原始值是否为空值 
--------------------编程问答-------------------- 我把更新DB放到了
 dsStaffDict.AcceptChanges();
  dsUsers.AcceptChanges();
  dsUserRole.AcceptChanges();

后面,页面表面是刷新了,但是数据库实际没有更新,这咋整????? --------------------编程问答-------------------- 这就是那个更新DB的方法
public bool SaveTablesData(DataSet dsChanged1, DataSet dsChanged2, DataSet dsChanged3)
        {
            ConnectionStringHelper.CheckOracleConnection(ref _oraConnection);
            
            _oraConnection.BeginTrans();
            
            try
            {
                if (dsChanged1 != null && dsChanged1.HasChanges())
                {
                    _oraConnection.Update(ref dsChanged1, dsChanged1.Tables[0].TableName, string.Empty);
                }
                
                if (dsChanged2 != null && dsChanged2.HasChanges())
                {
                    _oraConnection.Update(ref dsChanged2, dsChanged2.Tables[0].TableName, string.Empty);
                }
                
                if (dsChanged3 != null && dsChanged3.HasChanges())
                {
                    _oraConnection.Update(ref dsChanged3, dsChanged3.Tables[0].TableName, string.Empty);
                }
                
                _oraConnection.Commit();
                
                return true;
            }
            catch(Exception ex)
            {
                _oraConnection.RollBack();
                
                throw ex;
            }
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,