2

我想知道 TZQuery/TAConnection 是否能够处理连续的 SQL 语句并在运行时编辑数据库,即:

ZQuery.Close;
ZQuery.SQL.Clear;
ZQuery.sql.add('select * from Table1');
ZQuery.Open;

ZQuery.FieldByName('First_Field').AsInteger := 5;
 /// I do my stuff here with Table1 here 

// I switch to another table 
ZQuery.Close;
ZQuery.SQL.Clear;
ZQuery.sql.add('select * from Table2');
ZQuery.Open;

ZQuery.FieldByName('First_Field_of_Table2').AsInteger := 12;

如上面代码所示,在数据库运行时所做的任何更改都不会反映在 DBGrid 中,并且保持不变。我玩弄了 TZConnection 和 TZQuery 组件(自动提交、readCommited 等)的许多属性,以使记录显示在数据网格中,但这是徒劳的。

有趣的是,对数据库所做的每一次更改都完全按照我的意愿应用,因为我从 FlameRobin 监控它并且一切都很好,所以数据库实际上没有问题,但问题在于 Datasource 和 DBGRid 并没有反映当前的状况数据库。

4

1 回答 1

0

我注意到了同样的行为。我已经从 Lazarus 和 PHP 更新了我的数据库。从 PHP 完成的更新或插入仅在 ZConnection Disconnect 和 Connect 之后可见。简单的 ZQuery 关闭和打开不起作用。但是,当 Lazarus 应用程序中的数据更新时,关闭和打开工作。

于 2021-05-20T12:33:54.510 回答