我将 Delphi XE3 与 MySQL 数据库一起使用。我有一个 SQLconnection - SQLquery - DataSetProvider - ClientDataSet 的排列方式。当我对 CDS 的修改应用更新时,数据库中的更改会正确受到影响,但是当我刷新 CDS 时,会替换“旧”值。我正在使用的代码是:
CDS.IndexFieldNames:='pop0';
CDS.first;
for W := 1 to 5 do begin // display the original data
memo2.lines.add (IntToStr(CDS['pop0'])); CDS.Next;
end;
memo2.lines.add('');
CDS.first;
CDS.Edit; // modify data
CDS['pop0']:= 3004;
CDS.Post;
CDS.first;
for W := 1 to 5 do begin // display the modified data
memo2.lines.add (IntToStr(CDS['pop0'])); CDS.Next;
end;
memo2.lines.add('');
CDS.ApplyUpdates(0) ;
messagedlg('Check database',mtInformation,[mbOK],0);
CDS.refresh;
CDS.first;
for W := 1 to 5 do begin // display the updated data
memo2.lines.add (IntToStr(CDS['pop0'])); CDS.Next;
end;
备忘录中的输出如下:
3
4
375
597
678
4
375
597
678
986
3
4
375
597
678
我试图关闭并打开 CDS 作为刷新的替代方法,但我得到了相同的结果。任何想法为什么会发生这种情况?