首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

循环实施SQL语句,居然不是很稳定,好烦啊弄了两天了

2013-07-09 
循环执行SQL语句,居然不是很稳定,好烦啊,弄了两天了先声明 ,以下SQL语句 完全正确,并且没有和任何全局控件

循环执行SQL语句,居然不是很稳定,好烦啊,弄了两天了
先声明 ,以下SQL语句 完全正确,并且没有和任何全局控件进行关联,而且在单步调试执行状态时是正常的
而且ADOQuery连接数据库是正常的,给我的感觉 是太快了,就不正常,我Sleep(1000)正确率就大大提高 ,但这不合常理啊
是不是ADOQuery还有什么属性要设置呢?有哪个知道啊
//以下用到的变量都是局部定义 的,没有任何问题

for ( i = 0; i < sListBh->Count; i++)
  {
    bz = sListBh->Names[i];
    nZBH = atoi(sListBh->Values[bz].c_str());
    zbh =   ListZBBH->Values[bz];
    sql = "Insert into [工程取费] (原编号,上级编号,排序,主表,顺号,输出,项目,公式,基础,标志,专业取费) select 编号,上级编号,排序," + zbh +
          ",顺号,输出,项目,公式,基础,标志,'" + sTypeName + "'  from [;DATABASE="+DePath+"].[工程取费] where 表项=" + IntToStr(nZBH);
   aQ->ExecSQL();
}

[解决办法]
Sleep(1000)也太夸张了吧。本地数据库吗?access 2010的数据库引擎会好一些吧。
[解决办法]
自定义一个休眠函数:
void __fastcall CrnSleep(UINT nDelay)
{
    DWORD dw = ::GetTickCount();

    while (::GetTickCount() - dw < nDelay)
        Application->ProcessMessages();
}

然后加到循环中:
for ( i = 0; i < sListBh->Count; i++)
{
    ...
    aQ->ExecSQL();
    CrnSleep(10);
}

看看效果。

热点排行