gpt4 book ai didi

android - 如何使用SELECT SQLite语句并将数据输出为字符串?

转载 作者:行者123 更新时间:2023-12-03 18:16:03 25 4
gpt4 key购买 nike

好的,所以我知道如何将数据放入SQLite数据库中。但是如何返回值呢?

使用TSQLQuery将数据添加到数据库中,该方法有效:

procedure TForm2.Button2Click(Sender: TObject);
var
noteTitle : string;
begin
try
form1.SQLQueryInsert.ParamByName('title').AsString := edit1.Text;
form1.SQLQueryInsert.ParamByName('content').AsString := memo1.Text;
form1.SQLQueryInsert.ExecSQL(); // INSERT INTO notes (id, title, content) VALUES (:id, :title, :content)
form1.notes.Refresh;
form2.Edit1.Text := '';
form2.Memo1.Text := '';
form2.close;
form1.Show;
except
on e: Exception do
begin
ShowMessage(e.Message);
end;
end;
end;


现在,在尝试完成从表中读取的过程中,我已经做出了类似的假设:

procedure TForm1.ListView1DblClick(Sender: TObject);
var
results : TDataSet;
begin
if ListView1.Selected <> nil then
begin
form3.show();
SQLQuerySelectTitle.ParamByName('title').AsString := ListView1.Selected.Text;
SQLQuerySelectTitle.ExecSQL(); //SELECT title FROM notes WHERE title = :title
form3.memo1.Text := SQLQuerySelectTitle.Fields[0].ToString;
end;
end;


但是到目前为止,它只是返回列表超出范围错误。

谢谢,我真的可以用一些帮助来理解这一点,我试图寻找有关它的信息,但是没有运气。

最佳答案

假设“内容”是您用来填充备忘录的列:

procedure TForm1.ListView1DblClick(Sender: TObject);
begin
If ListView1.Selected <> nil Then Begin
form3.show();
form3.memo1.Lines.Clear;
With SQLQuerySelectTitle Do Try
ParamByName('title').AsString := ListView1.Selected.Text;
Open;
First;
While Not Eof Do Begin
form3.memo1.Lines.Add(FieldByName('content').AsString);
Next;
End;
Finally
Close;
End;
end;
end;


实际上,我宁愿在填充memo1之后使用form3.Show。

First / When Not Eof / Next是读取数据集所有记录的标准方法。实际上,在公开赛之后,您可以避免第一局。

使用fieldByName()比使用fields []更具可读性和可维护性,但是效率较低。您可以通过在OPEN之后但While循环之前使用var f:TField并执行单个f:= FieldByName来优化它。在While循环中,您可以直接引用f。如果您希望读取数千条记录,那么这是必须的(但是我不认为这是事实)。

关于android - 如何使用SELECT SQLite语句并将数据输出为字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21651087/

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