各位大哥,小弟有个问题想请教一下:
我在程序中使用DataGrid更新数据库,开始对一个字段(比如说“业务员”在DataGrid里面是个下拉框)进行修改操作,开始几次还可以,可是等我的操作频繁,数据更新加快的时候,就出现了并发冲突!请问我这个是什么情况? 我的程序是单机版的,而且就我一个用户在操作!
这个是我提交到数据库的函数this.MyLink.UpDataDataBase(MySet.GetChanges(),SendTableName);
MyLink 是我写的操作数据库类的对象的实例化!调用的函数是:
public DataSet UpDataDataBase(DataSet ChangedDataSet,string TableName)
{
this.MyCon = new SqlConnection(this.ConStr);
this.da = new SqlDataAdapter(this.StrSql,this.MyCon);
this.MyBuilder = new SqlCommandBuilder(da);
this.da.Update(ChangedDataSet,TableName);
//返回更新了的数据库表
return ChangedDataSet;
}小弟先谢谢 大家了
我在程序中使用DataGrid更新数据库,开始对一个字段(比如说“业务员”在DataGrid里面是个下拉框)进行修改操作,开始几次还可以,可是等我的操作频繁,数据更新加快的时候,就出现了并发冲突!请问我这个是什么情况? 我的程序是单机版的,而且就我一个用户在操作!
这个是我提交到数据库的函数this.MyLink.UpDataDataBase(MySet.GetChanges(),SendTableName);
MyLink 是我写的操作数据库类的对象的实例化!调用的函数是:
public DataSet UpDataDataBase(DataSet ChangedDataSet,string TableName)
{
this.MyCon = new SqlConnection(this.ConStr);
this.da = new SqlDataAdapter(this.StrSql,this.MyCon);
this.MyBuilder = new SqlCommandBuilder(da);
this.da.Update(ChangedDataSet,TableName);
//返回更新了的数据库表
return ChangedDataSet;
}小弟先谢谢 大家了
例如:
public DataSet UpDataDataBase(DataSet ChangedDataSet,string TableName)
{
lock( this )
{
this.MyCon = new SqlConnection(this.ConStr);
this.da = new SqlDataAdapter(this.StrSql,this.MyCon);
this.MyBuilder = new SqlCommandBuilder(da);
this.da.Update(ChangedDataSet,TableName);
}
//返回更新了的数据库表
return ChangedDataSet;
}
建议 不要试图通过SqlCommandBuilder来偷懒处理复杂的更新逻辑,以自定义sql语句代替,代码例子参考,
http://blog.csdn.net/zhzuo/archive/2004/08/06/67016.aspx
http://blog.csdn.net/zhzuo/archive/2004/08/06/67037.aspx