.net 高手务必请进!超级怪异的问题!折磨了我几天了
问题描述:datagridview绑定了一个临时表,批量增加后保存后,记录当然保存在临时表里,然后后台代码把临时表里记录复制到正式表里.
异常的表现:批量保存后,临时表里记录正确,但是复制到正式表里后,少了一条,如果增加是只增加一条,则复制不到正式表里.
更异常的表现:如果在保存的方法上设置断点,执行后,结果正确,反之,直接执行后,没有复制到正式表里
代码如下,请高手指教
//批量保存datagridview
private void btnSave_Click(object sender, EventArgs e)
{
if (oda != null)
{
OleDbCommandBuilder odcb = new OleDbCommandBuilder(oda);
OleDbCommand objSc = odcb.GetUpdateCommand();
oda.UpdateCommand = objSc;
oda.Update((DataTable)dataGridView1.DataSource);
oda.Dispose();
try
{
//更新临时表到表中
string updtemoToTabstr = "insert into sufferertab select * from sufferertab_temp where sufferername is not null ";
publicOldDB.excuteSql(updtemoToTabstr);
//string deltemp = "delete * from sufferertab_temp";
//publicOldDB.excuteSql(deltemp);
MessageBox.Show("保存成功!", "提示", MessageBoxButtons.OK);
this.comboxitem.Enabled = true;
}
catch
{
MessageBox.Show("保存失败!", "提示", MessageBoxButtons.OK);
}
}
else
{
MessageBox.Show("没有要保存的数据!", "警告", MessageBoxButtons.OK);
}
}
------解决方案-------------------- 最好查查你的游标位置。。。。
------解决方案-------------------- 探讨 问题补充:怪异的是如果断点执行,一步一步执行,就可以把临时表里的记录全部复制到正式表,直接执行中是少一行
------解决方案-------------------- 用休息2秒的方法不错,
或者自己加判断
因为是调试,所以执行起来慢,代码加载等一些 因素就全部加载完成
直接运行,速度太快,导致上面代码没加载完就走下面的代码了
你这个情况 根javascript 的一样,,
上次我也有这个情况,不过后来解决了,,加了判断
------解决方案-------------------- 猜测:...(仅仅猜测):
1. 数据库更新操作和datagridview的绑定操作都是需要时间的,这些时间差也许就是导致你在插入正式表里的数据有错误;
2. 数据在debug的时候能完全插入正式表,在直接运行的时候不行,说明在直接运行的时候有可能有什么语句没直接,或者是循环的条件不正确(具体的也不清楚).
3. 这种情况我也曾遇到过,当时也无法解决,鼓捣了很久,最后还是来了个sheep()直接了事.
希望高手继续给解释哈.