table.post不返回,是什么问题(100分)

  • 主题发起人 主题发起人 yanghai0437
  • 开始时间 开始时间
Y

yanghai0437

Unregistered / Unconfirmed
GUEST, unregistred user!
for (int i=0;i<500;i++)
{
if(Table->Active) Table->Close();
Table->Open();
for(int j=1;j<=6;j++)
{
Table->Insert();

Table->FieldByName("SessionID")->AsString=strSessionID;
Table->FieldByName("Payphone_Number")->AsString=strPayphone_Number;
Table->FieldByName("Start_DateTime")->AsDateTime=dtmStart_DateTime;
Table->Post();//不返回

}
Table->Close();
}
上面程序只是程序的一部分,当i=24左右时,程序执行到post时就不往下走了,不知道是
什么问题。(我是用C++ builder +SQL 6.5 +BDE5.1+NT4.0)
 
资源耗尽吧,
你为什么反复关闭、打开Table呢,所有数据插入完后再关闭不可以吗?
 
同意楼上的,Post也可只执行一遍,提到循环外面。
另外你的第二层循环不知什么意思,
 
看看有没有数据库锁,如果数据库被锁了也会出现这样的情况。
 
可能是资源耗尽,因为你的表要开关达500次
其实你开关表只是为了刷新记录
只需要在循环开始前将表打开Table->Open();
然后进行你的for循环
在循环结束后,刷新一次就可以了
最后加上
Table->Close();
Table->Open();
 
应该是出现了阻塞的情况。可能是网络,也可能是数据库。
这种情况下,由于程序运行的量太大,你想在每次处理后都提交是有点不现实的。
一次网络数据交换的过程所消耗的时间远远大于你的内层循环所消耗的时间。
这种情况下导致操作系统的网络通信出现了阻塞,解决方法参照楼上各位FW的意见。
 
只要打开一次,然后多次insert就行啦
 
问题解决了,谢谢大家.分配的分不一定合理,请大家原谅.
 
后退
顶部