【发布时间】:2019-12-28 12:06:30
【问题描述】:
我有一个图形界面,可以在各自的选项卡中显示多个 SQLite 查询结果。现在,当用户关闭其选项卡时,我正在完成一个sqlite3_stmt 语句,而不是立即。如果有多个选项卡/结果,第一个给我一个sqlite3_stmt,但第二个给我两个:第二个选项卡中的sqlite3_stmt,加上第一个选项卡中的一个。第三个选项卡会给我 3 个结果,依此类推。
简化的 Delphi 代码:
var
FHandle: sqlite3;
QueryResult: sqlite3_stmt;
begin
QueryResult := nil;
QueryStatus := sqlite3_prepare_v2(FHandle, SQL, -1, QueryResult, nil);
if QueryStatus = SQLITE_OK then begin
QueryResult := sqlite3_next_stmt(FHandle, nil);
while QueryResult <> nil do begin
while sqlite3_step(QueryResult) = SQLITE_ROW do begin
// store row data...
end;
// points to a previously prepared query:
QueryResult := sqlite3_next_stmt(FHandle, QueryResult);
end;
end;
end;
如何只从刚刚触发的 SQL 中返回语句,而不是从较早的 SQL 中返回?
编辑:我刚刚尝试了sqlite3_prepare_v3,它有一个prepFlags 参数,我可以在其中传递SQLITE_PREPARE_PERSISTENT。但这似乎并没有改变任何东西。
【问题讨论】: