如何在 C++ 中的单类方法中获取 SQLite 记录

Vol*_*ike 6 c++ sqlite lambda

在这个例子中...

http://www.sqlite.org/quickstart.html

...我看到了如何使用sqlite3_exec()回调类方法或函数来获取记录集并对其进行迭代。

好吧,如果我想创建一个类DB并有一个静态类方法怎么办

static void * getRS(void *hDB,std::string sSQL) ?

我对 C++ 有点陌生,但很快就掌握了它。在 C++ 中有没有办法像 Lambda 函数一样创建,从中获取结果,然后将它们传回?或者,是否有另一种技术可以返回我可以遍历每一行的 std::map、std::multimap 等?

(注意,我正在使用 XCode 并从我的 Objective C 项目中的 db.static.mm 文件调用 C++,如果这很重要的话。)

这个问题不是sqlite3_exec() 回调函数澄清的重复。在那个问题中,作者本质上询问了回调是如何sqlite3_exec(). 在我的问题中,我问的是如何对 SQLite3 代码进行自上而下的处理,而不是使用 callback。碰巧有人留下了解决我的问题的答案(不是批准的答案,请注意),而不是作者的问题。

Vol*_*ike 4

以自上而下(而不是回调)方式执行此操作的最佳解决方案是不使用sqlite3_exec()。相反,请使用sqlite3_prepare_v2()sqlite3_step()sqlite3_finalize()执行此操作。(可选)可以通过各种sqlite3_bind_*()调用注入/绑定查询参数。

这是正确代码的示例。