如何使用sqlite3_step迭代sqlite3中的行?

时间:2012-04-27 07:16:48

标签: c++ sqlite

在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)文件中使用它们时,它总是返回第一行和死循环。谢谢你的帮助。

1 个答案:

答案 0 :(得分:2)

因为,在step部分,您正在运行sqlite3_reset(),因此它会在第一行后关闭。