我有一个图形界面,可以在自己的选项卡中显示多个 SQLite 查询结果。sqlite3_stmt
现在,当用户关闭其选项卡时,我正在完成一个声明,而不是立即。如果有多个选项卡/结果,第一个给我一个sqlite3_stmt
,但第二个给我两个:sqlite3_stmt
来自第二个选项卡,加上来自第一个选项卡的那个。第三个选项卡会给我 3 个结果,依此类推。
简化的德尔福代码:
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
。但这似乎并没有改变任何东西。