C++ 是否有一种方法可以撤消C/C++;?

C++ 是否有一种方法可以撤消C/C++;?,c++,c,sqlite,C++,C,Sqlite,我正在使用的系统使用SQLite3数据库作为后台日志存储,每个条目作为两列条目:|时间|数据|。重放日志就像准备一条语句来获取所有条目一样简单,每个sqlite3\u step()调用都会在每次调用时返回数据 从那时起,我们就尝试使用专门的工具,根据需要进行升级和跳过。现在,我们发现自己处于一种情况下,我们需要倒退一个或多个条目。有没有一种方法不需要重置和/或生成新查询就可以撤消使用sqlite3\u step()进行的条目升级 sqlite3\u reset()不是合适的解决方案,因为这会将数

我正在使用的系统使用SQLite3数据库作为后台日志存储,每个条目作为两列条目:|时间|数据|。重放日志就像准备一条语句来获取所有条目一样简单,每个
sqlite3\u step()
调用都会在每次调用时返回数据

从那时起,我们就尝试使用专门的工具,根据需要进行升级和跳过。现在,我们发现自己处于一种情况下,我们需要倒退一个或多个条目。有没有一种方法不需要重置和/或生成新查询就可以撤消使用
sqlite3\u step()
进行的条目升级

sqlite3\u reset()
不是合适的解决方案,因为这会将数据库指针返回到数据库中的第一个条目。我想回到上一个
sqlite3\u步骤()
调用的上一个条目

有没有一种方法不需要重置和/或生成新查询就可以撤消使用
sqlite3\u step()
进行的条目升级

否,从当前版本(3.27.2)起,没有。SQLite3只提供仅向前的结果集

您似乎已经意识到通过
sqlite3_reset()
重置准备好的语句的可能性,但我想您应该明白,这与后退不是一回事,即使是与再次前进查看结果相结合,与前面的操作相反。重置将放弃当前结果集,随后再次单步执行准备好的语句将导致执行新查询,并检索这些结果


如果您希望能够在跨过前一个结果行后访问该行中的数据,而不执行新的查询,那么您需要将其捕获并保留在某种本地数据结构中。根据您的需要,这可能不一定是您读取的所有数据。另一方面,如果除了重新读取数据之外,您还有其他原因希望结果集光标向后移动,那么您需要找到另一种方法来达到预期的目的。

可能重复保存您在所选数据结构中已经看到的行中的数据,并使用它查看以前的记录。对于其中一些记录,我们讨论的是GB到TB的数据顺序;我们不想预读,因为使用这些数据的一些工具的总体速度和资源占用都很慢。关于“sqlite后退”复制:
sqlite_reset()
不是一个选项,因为它会将您带回数据库中的第一个条目。我正在寻找上一个检索到的条目。谢谢。是的,我确实读过最新的文档,当我找不到它时,我猜测这可能是不可能的,或者我不知何故错过了它。最初,我希望避免捕获以前读取的数据。这种方法产生了一些错误案例(在我们的应用程序中,而不是SQLite3本身)。但鉴于目前的要求,这似乎是不可避免的。谢谢你的洞察力!