点击删除按钮时,提示违反并发性: DeleteCommand 影响了预期 1 条记录中的 0 条。
// 删除STAFF_DICTstring 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#