请教一下,我用一个 clientdataset 连接中间层的 datasetprovider 。想把 clientdataset 里面 result 字段全部初始化值为 'N'。现在使用
clientdataset.first;
while not clientdataset.eof do
begin
clientdataset.edit;
clientdataset.fieldvalues['result'] := 'N';
clientdataset.post;
clientdataset.next;
end;
clientdataset.applyupdates(0);
由于有8千多条数据,最后感觉 applyupdate 的时候,要等将近半分钟。(之前想使用 update ...set ... 的 sql,但是中间层的 SQLQuery 老是报错,好像说什么不能返回 cursor 什么的,我想是不是 SQLQuery 不支持直接 update 的 sql 啊 。所以只有做一个 while 了。)
请教高手怎么更新能提高效率啊?最好有那种不需要 loop 一次全部更新的方法,谢谢。
clientdataset.first;
while not clientdataset.eof do
begin
clientdataset.edit;
clientdataset.fieldvalues['result'] := 'N';
clientdataset.post;
clientdataset.next;
end;
clientdataset.applyupdates(0);
由于有8千多条数据,最后感觉 applyupdate 的时候,要等将近半分钟。(之前想使用 update ...set ... 的 sql,但是中间层的 SQLQuery 老是报错,好像说什么不能返回 cursor 什么的,我想是不是 SQLQuery 不支持直接 update 的 sql 啊 。所以只有做一个 while 了。)
请教高手怎么更新能提高效率啊?最好有那种不需要 loop 一次全部更新的方法,谢谢。
用clientdataset来完成大数据量的会很慢!!是因为它的机制造成的!!
function TCoTestAccount.MExecSql(const Psql: WideString): Integer;
begin
Result:=0;
Try
AQExecSql.Close;
AQExecSql.SQL.Clear;
AQExecSql.SQL.Text:=Psql;
AQExecSql.ExecSQL;
Result:=1;
Except
End;
end;客户端:
VAR
SQL :STRING;
SQL:=‘’。。;
If ClientDm.ATest.MExecSql(Sql)=0 then
Begin
Application.MessageBox('服务器发生故障!',pchar(Application.Title),mb_iconwarning);
Exit;
end;
clientdataset。EXECUTE;