2

私の 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;

上記のコードは正常に機能し、フィールド name の内容をテーブル 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 句を追加すると、クエリは何も返しません! 誰かが私のコードで何が間違っているかを提案できますか?

これが私のテーブルのデータの画像です: ここに画像の説明を入力

4

2 に答える 2

1

districtあなたのスクリーンショットは(大文字の K)である 1 つのデータベース行を示していますが、SQL クエリは代わりに (小文字の k)'Kabol'を探しています。'kabol'クエリが文字列を大文字と小文字を区別して比較していると仮定すると、行が見つからない理由が説明されます。そのため、クエリ入力で大文字と小文字を修正するか、代わりに大文字と小文字を区別しないクエリを実行してください。

于 2013-05-17T22:22:59.420 に答える