ADO+Access真的这么慢吗?(100分)

  • 主题发起人 主题发起人 beyondeast
  • 开始时间 开始时间
B

beyondeast

Unregistered / Unconfirmed
GUEST, unregistred user!
我先用TADOTable打开一个表,然后edit, append 等,再close,
紧接着又去读这个表,发现表的内容没变,而当我在写表和读表之间加上一段延时,
比如sleep(1000),才能顺利读出更新部分。

不知是否我程序的问题,还请各位赐教!
 
不慢呀,你试一下TADODataSet,TADOCommand,这两个应该快一些
 
没有主键或唯一索引的表会出现此情况
 
呵呵,朋友也用这个方案。他要处理的数据就是太大了。
他也说慢。[:)]
 
先 Post;再 Close;然后 Open;会出现这样的问题吗?
应该不会吧!
 
可能是ACCESS慢,用FORXPRO数据库吧,溜快
 
不会啊,很快的。关键是要用TQuery控件,不要用TTable,而Tdatabase还可以支持事务
 
不是慢,看看这个,也不知道解决办法。
http://www.delphibbs.com/delphibbs/dispq.asp?lid=779547
 
用TADODataSet应该很快了。我当时写的程序调用库里面的数据有几M都没有问题,不会迟延
很久,一般有10M就要1,2秒了。。
用TADOCommand不行,没有数据返回。。
 
用TADOQuery看看
 
我一直用TADOQuery,从来没有遇到类似问题。
 
创建控件,我测试了的代码:
procedure TForm1.Button1Click(Sender: TObject);
var
pb:TProgressBar;
begin
pb:=tProgressBar.create(self);
pb.parent:=StatusBar1;
{pb.Top:=3;
pb.Left :=10;
pb.Height :=10;
pb.Width :=300;
}
pb.Align :=alclient;
pb.Min:=0;
pb.max:=1000;
pb.Position:=500;
end;
 
你打开数据集时不是把所有的数据都打开了?
那样会很慢的。
 
肯定是机子的毛病!
 
to all:
我觉得我的问题和http://www.delphibbs.com/delphibbs/dispq.asp?lid=779547的比较类似,
请各位继续关照

cfx兄:
那么请讲讲看,到底是机子的什么毛病?
 
to all:
在close之前,我已经post过了。
我用tadotable的主要原因是写数据时可以忽略字段的类型,不管是什么类型的字段
一律field.asstring:='asdgs'解决。而如果用TADOQuery,则需要进行类型判断。

所以我还是想用TADOTable,
另外,TADODataset也试过了,没用
 
不是ADO慢,好像是ADO各个事件之间的时间差问题,你延时1毫秒试试
 
microyzy:

我都延时了1000毫秒了,sleep(1000),还是不能全部读出。
而且这样延时也不是办法,在这台机器上延时1毫秒可以,
放到另外一台机器上也许就不行了。
 
个人认为:无论table 还是adotable 都是对整个表进行操作的,如果数据量很大的话
一定会很慢的,提交任务到后台数据库、再把整个表取出来到前台应用程序、处理后再交给
后台,几千条记录可以,几万、几十万就挂了!呵呵
个人意见:使用query
 
楼上的老兄讲的对,定义索引也很重要
 

Similar threads

回复
0
查看
1K
不得闲
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部