SQLite3 C++,需要 sqlite3_stepback 的解决方法

SQLite3 C++, need a workaround for a sqlite3_stepback

我目前正在使用 sqlite3.c 文件中的功能在 C++ 中编写一个 .dll,该文件可以在官方 SQLite page

中找到

sqlite3.c 包含使用 sqlite3 执行基本操作的各种函数,例如连接到数据库、打开记录集、执行 SQL 语句等。

用于导航到记录集中下一条返回记录的函数之一是 sqlite3_step。不幸的是,没有 sqlite_stepback 或类似的东西。

在我的例子中,我需要执行一个步骤,然后在函数中执行一个后退以确定将返回的数据的大小,以便使用 .dll 的应用程序创建一个正确大小的缓冲区分配所有将返回的数据。

我需要以下两种可能的解决方法中的任何一种的帮助:

如果可能的话,我认为最好的选择是第二个。

提前致谢:D

I need to do a step and then do a stepback in a function to determine the size of the data that will be returned

不,你不知道。如果你这样做了,其他人会比你先需要它,并且这个功能就会存在。因此我们知道其他方法是可能的,而且可能更好。

只需重新组织您接受调用者请求的方式以及您与 SQLite 交互的方式。也许,从某种意义上说,您必须比应用程序“领先一步”才能为其提供所需的信息。

当 sqlite3_step returns 时,您可以调用任意数量的函数来确定行中的值及其大小。你有你需要的。没有必要在那个时候回到上一行。

如果你怀疑我,我在 FreeTDS 上工作了很多年。 TDS 协议是来自 DBMS 的流。回不去了”。 FreeTDS 提供了三个 API,所有这些 API 都具有某种 client-side 游标,可以让应用程序滚动回先前提供的行。但该功能完全发生在客户端库中,没有服务器交互。

我实现了其中的一些,但从未在我的任何应用程序中使用过它。通过数据的最快方式是向前,一次。