【发布时间】:2015-03-13 21:04:35
【问题描述】:
我有一个 ListBox 显示数据库中单个字段 (first) 的所有记录。当用户单击 ListBox 项目时,我希望显示 db (last) 中不同字段的值,即相同的记录。我的代码 ListBox OnClick 事件代码是:
SQLQuery2.SQL.Text:='SELECT * FROM Names WHERE first= :FIRST';
SQLQuery2.Params.ParamByName('FIRST').AsString := ListBox1.Items[ListBox1.ItemIndex];
SQLQuery2.Open;
ShowMessage('You selected '+SQLQuery2.FieldByName('last').AsString);
当您单击一个项目时,MessageBox 中会出现预期的字段。但是,如果您随后单击不同的项目,则不会发生任何变化——MessageBox 显示原始字段。
我对 SQLQuery 组件以及它们如何与底层数据库交互了解不足,无法知道发生了什么。
[附注数据库是 sqlite3,如果这很重要,我使用的是 Lazarus 而不是 Delphi,如果这很重要。]
【问题讨论】:
-
在重试之前是否关闭查询?
-
@Graymatter--不,不知道我需要这样做。刚试过;一切正常。如果你把它作为回应(也许有一点解释为什么我需要这样做?我是新手。)我可以接受它作为答案......谢谢!
-
通常任何可以是
opened的东西也可以是closed。 -
谢谢,杰瑞 :-) ...我只是想知道为什么打开的东西需要关闭并重新打开?