各位, 我想遍历一个表里的所有条目, 然后修改一下其中几个列的值, 代码如下:procedure TForm1.Button10Click(Sender: TObject);
begin
SQLDataSet1.CommandType := ctQuery;
SQLDataSet1.CommandText := 'SELECT * FROM students';
SQLDataSet1.ExecSQL(); SQLDataSet1.Open;
SQLDataSet1.First;
while not SQLDataSet1.Eof do
begin
SQLDataSet2.CommandType := ctQuery;
SQLDataSet2.CommandText := 'UPDATE students set name = (:name) where ID = (:id);'; SQLDataSet2.Params.ParamByName('name').AsString := trim(SQLDataSet1.FieldByName('name').AsString); SQLDataSet2.ExecSQL;
SQLDataSet1.Next;
Application.ProcessMessages;
end;
SQLDataSet1.Close;
end;
似乎是SQLDataSet1没close之前, SQLDataSet2操作同一个表去修改数据, 会造成堵塞, 反应非常慢.请问一下改怎么解决. 谢谢.
begin
SQLDataSet1.CommandType := ctQuery;
SQLDataSet1.CommandText := 'SELECT * FROM students';
SQLDataSet1.ExecSQL(); SQLDataSet1.Open;
SQLDataSet1.First;
while not SQLDataSet1.Eof do
begin
SQLDataSet2.CommandType := ctQuery;
SQLDataSet2.CommandText := 'UPDATE students set name = (:name) where ID = (:id);'; SQLDataSet2.Params.ParamByName('name').AsString := trim(SQLDataSet1.FieldByName('name').AsString); SQLDataSet2.ExecSQL;
SQLDataSet1.Next;
Application.ProcessMessages;
end;
SQLDataSet1.Close;
end;
似乎是SQLDataSet1没close之前, SQLDataSet2操作同一个表去修改数据, 会造成堵塞, 反应非常慢.请问一下改怎么解决. 谢谢.
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货