gpt4 book ai didi

database - 当我添加 WHERE 子句时,为什么我的查询没有返回任何结果?

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

我的 Delphi 应用程序已成功连接到 SQLite。

procedure TForm1.Button1Click(Sender: TObject);
begin
ZQuery1.Close;
ZQuery1.SQL.Clear;
ZQuery1.SQL.Text := 'SELECT Name FROM city;';
ZQuery1.Open;

while not ZQuery1.EOF do
begin
Memo1.Lines.Add(ZQuery1.FieldValues['name']);
ZQuery1.Next;
end;
end;

上面的代码工作正常,并从表 city 中加载字段名称的内容。然而,

procedure TForm1.Button1Click(Sender: TObject);
begin
ZQuery1.Close;
ZQuery1.SQL.Clear;
ZQuery1.SQL.Text := 'Select name from city WHERE district = :aField';
ZQuery1.Params.ParamByName('aField').Value := 'kabol';
ZQuery1.Open;

while not ZQuery1.EOF do
begin
Memo1.Lines.Add(ZQuery1.FieldValues['name']);
ZQuery1.Next;
end;
end;

令人惊讶的是,当我添加 where 子句时,查询没有返回任何内容!谁能指出我的代码有什么问题?

这是我表中数据的图像: enter image description here

最佳答案

您可能没有任何包含 kaboldistrict 的数据。添加 WHERE 子句将导致没有行被返回,这意味着 ZQuery1.Eof 立即为真,而你的 while not ZQuery1.Eof do 永远不会进入循环。

您可以通过将您的第一个查询(有效的查询)更改为如下内容来检查这一点:

ZQuery1.SQL.Text := 'SELECT Name, District FROM City';

然后将输出更改为

Memo1.Lines.Add(ZQuery1.FieldValues['name'] + #9 +
ZQuery1.FieldValues['district']);

如果您在备忘录的最右侧列中没有看到至少一行包含 kabol,则您没有任何行符合您的 WHERE 条件. (请注意,大多数数据库都区分大小写,因此 kabol 不等于 Kabol;第一个会匹配您的 WHERE,但第二个会不是。)

关于database - 当我添加 WHERE 子句时,为什么我的查询没有返回任何结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16614471/

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