新增,修改,刪除出現並行違規的問題!!!答得好有高分!!
小弟我現在遇到並行違規,很苦悶
class dataClass
{
comm c = new comm();
public SqlDataAdapter da;
public DataSet myset = new DataSet();
public DataSet show(string sql,string tablename)
{
myset.Clear();
try
{
c.Connection();
da = new SqlDataAdapter(sql, c.constring);
SqlCommandBuilder bu = new SqlCommandBuilder(da);
da.Fill(myset,tablename);
return myset;
}
catch (Exception ex)
{
throw ex;
}
finally
{
c.sqlConn.Close();
}
}
}
然後調用類直接更新數據
dataClass data = new dataClass();
DataSet ds = new DataSet();
load事件
{
string tablename = "製造明細表";
ds = data.show("select * from "+tablename,tablename);
}
然後直接更新 data.da.Update(ds, ds.Tables[0].TableName);
------解决方案--------------------从报错信息来看你的update是执行了的 说明SqlCommandBuilder的使用没有问题
那么接下来 就看你这些做新增、修改、删除的操作代码了
------解决方案--------------------谈不上……
只是不知道业务逻辑
例如 可否只有一个leader的角色可以修改和删除数据
一般业务人员只能浏览
同时多人访问和操作一个表 按你目前的逻辑势必会造成数据源的不一致。
或者你也像源代码管理器一样 有签出功能……
有锁的概念
再或者 是否可以将数据拆分成具体的工作项 每个业务人员只能看到属于自己的数据,并对其进行操作。
这些还是需要具体情况来具体分析
------解决方案--------------------可以在原数据表中添加一个字段,每进行一步数据操作,都对此字段进行修改,可以是自动加1的int型,你从数据库中获取数据时,将此字段取出放到一个变量中,如果你在操作删除修改等动作时,再次从数据库中提取,如果此时此字段与你开始提取的字段值不相等,就说明数据库的数据已被修改!可以按你自己的意愿来进行操作,重新提取或是覆盖!
只供参考!