Sqlite - 在读取行时插入行

时间:2010-10-29 09:42:52

标签: c++ sqlite

想象一下,我在sqlite表中有3行。

在读取这3行时,我还想根据这3行中的值插入新行。

我对这些行进行选择并使用sqlite3_step函数来获取每一行。

问题是sqlite3_step循环超过3次,我想是因为它也看到了新插入的行。不知何故,光标会重置并且相同的行被读取两次等。

如何让sqlite3_step只读3行?基本上我希望只遍历结果集而不是新行。

感谢。

4 个答案:

答案 0 :(得分:1)

sqlite有一个函数可以立即返回所有行;您可以使用它来获取现有行,然后添加新行。我使用它已经有一段时间了,所以我忘记了函数的名称。

答案 1 :(得分:1)

我认为你可以通过在循环之前添加行来启动事务来实现所需的行为,该循环使用sqlite3_step迭代行并在循环之后提交此事务。

答案 2 :(得分:1)

您可以使用变量来保存最后插入的行(当您第一次执行插入时)。如果您的目标是在达到新集时停止处理...插入时返回此值。您还可以使用;

获取最后插入的行
sqlite3_last_insert_rowid(sqlite3*)

如果你想跟踪触发插入的行 - 只需在处理它时存储它的rowid。

这将为您提供一个有效的行窗口,以便在

中处理
processThisRow = ( currentRowId > lastTriggered && currentRowId < firstInserted );

..或者您可以使用上面建议的单独交易。

希望这有帮助

Rgrds 安德斯

答案 3 :(得分:1)

基本上,这就是我解决这个问题的方法。

我做的更新&amp;通过遍历所有行来删除。但是,只有在完成遍历后才会插入。

感谢您的帮助。