数组(50分)

  • 主题发起人 主题发起人 xll
  • 开始时间 开始时间
X

xll

Unregistered / Unconfirmed
GUEST, unregistred user!
在C/S模式中,向服务器上的SQL SERVER 插数据,

i:=0;

WITH table1 do
begin
open
while i<1000 do
begin
insert;
fieldbyname('x1').asinteger:=dd[i,0];
fieldbyname('x2').asinteger:=dd[i,1];
fieldbyname('x2').asinteger:=dd[i,2];
....
post;
inc(i);
end;
end;

按理说通过数组应该很快,Table1是空表,但速度奇慢,不知何原因?
我需要通过数组的方法来操纵数据库,不要和我谈Query
 
将 insert 换成 Append 试试
 
刚才我写错了,我本来用的就是append
 
1、表在Server上有Primary Key吗?
2、前端程序的Table.IndexFieldNames给值了吗?

如果都没有,只好慢了。

if (1 true) and (2 false) then 程序在提交给SQL时的Where部分
是所有的字段,它要一个一个字段比较,才能保存一条记录。
 
速度奇慢——>因为用Table!!
 
table1.CachedUpdates:=true;
 
关键是我要通过数组插入记录,因此服务器端有无INDEX 并没关系
前端不存在Table的问题

table1.CachedUpdates:=true;改善不大!
 
用table1.CachedUpdates:=true后插入记录失败,即被插入的表为空?!
用table1.CachedUpdates:=true难道还有讲究???
 
还要table1.refresh一下
 
原程序的POST一句应该去掉
因为
Dataset methods that change the dataset state, such as Edit, Insert, or Append, or that move from one record to another, such as First, Last, Next, and Prior Automatically call Post.
估计可以提高一些效率.
 
那位同志解释一下"用数组操作"与用table还是query有什么必然联系
 
把Append改为AppendRecord
 
用INSERT INTO 最快,数值通过参数传递!
 
>>>>>>>>>>>x11:
我也不明白
《〈"用数组操作"与用table还是query有什么必然联系〉》》

你的程序我看了一下,速度满恐怕不是程序的问题,不过你的数组太大了把,
应该可以用其他方法


 
接受答案了.
 
后退
顶部