如何使用 sqlite3_step 迭代 sqlite3 中的行

How to iterate the rows in sqlite3 with sqlite3_step?

本文关键字:sqlite3 迭代 step 何使用      更新时间:2023-10-16

在SQLite3DB.cpp中,我有一些代码吹奏:

   void QueryJsFileBegin() {
       SQLite3Initilize();
    }
    bool QueryJsFileNext(JS_FILE* js_file) {
        int err = sqlite3_step(stmtQueryJSFILE);
        if (err != SQLITE_ROW) 
            return false;
        // get data.
        return true;
    }
    void QueryJsFileEnd() {
        sqlite3_reset(stmtQueryJSFILE);
    }

当我在SQLite3DB中测试它们时,这些工作正常.cpp

void test () {
    db::JS_FILE js_file;
    for (db::QueryJsFileBegin(); db::QueryJsFileNext(&js_file); db::QueryJsFileEnd()) {
        MessageBoxA(NULL, js_file.js_file_name_.c_str(), "", 0);
    }
}

但是当我在另一个 cpp(如 main.cpp)文件中使用这些文件时,它总是返回第一行和死循环。感谢您的任何帮助。

因为在 for 的step部分中,您正在运行 sqlite3_reset() ,所以它在第一行之后关闭。