gpt4 book ai didi

database - 如何使用 SQLQuery 组件运行多个查询?

转载 作者:搜寻专家 更新时间:2023-10-30 22:11:02 25 4
gpt4 key购买 nike

我有一个列表框,显示数据库中单个字段 (first) 的所有记录。当用户单击 ListBox 项目时,我希望显示数据库中不同字段的值(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。]

最佳答案

您需要先关闭您的查询,然后才能再次打开它。如果您查看 TDataSet 上的 Open 代码,它会将 Active 属性设置为 true。 Active 的设置代码在做任何工作之前首先检查值是否不同:

procedure TDataSet.SetActive(Value: Boolean);
begin
..
if Active <> Value then
begin
end;
end;

因此在您的情况下,active 属性已经为真,代码刚刚退出。

关于database - 如何使用 SQLQuery 组件运行多个查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29041908/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com