C ++ / SQLite只输出一行数据

时间:2017-04-08 16:22:47

标签: c++ sqlite

我遇到的问题是我的5个测试行中只有一个会用C ++输出。我的代码是:

#include <cstdio>
#include <sqlite3.h>
#include <windows.h>
#include <wincrypt.h>
#include <string>
#include <vector>
#include <iostream>

using namespace std;
/*Definitions*/
sqlite3 *db;
void *arg;
char *err;
const char* stmt = "SELECT * from table";
/*End of Definitions*/

int exec(void *arg, int argc, char **argv, char **column) {
    int i;
    for(i = 0; i < argc; i++) {
        cout << column[i] << ": " << argv[i] << endl;
    }
    cout << "------" << endl;
}

int main() {
    int rc = sqlite3_open("test.sqlite", &db); /*Open db "test.sqlite"*/
    if(!rc) {
        while(true) {
            sqlite3_exec(db, stmt, exec, arg, &err);
            if(err) {
                break;
            }
        }
    }
    /*Ending Stuffz (NOTHING BEYOND THIS POINT)*/
    cin.get();
    return 0;
}

我没有得到任何错误;它纯粹只是输出第一行。感谢任何帮助。谢谢。

1 个答案:

答案 0 :(得分:1)

只需在exec函数的结尾处返回

说明:

在函数'exec'中,当它什么都不返回时,数据库服务器的行为就像该函数被某种方式终止(就像某种东西破坏了该函数并产生了错误),因此它只是停止发送数据,因为回调函数因错误而终止....因此,当我们返回0时,我们说函数“ exec”正常工作,因此它会继续发送数据...如果您返回任何其他整数,它将像对待错误终止的函数一样处理它并停止发送数据。我遇到了同样的问题,我通过使回调函数(exec)返回0来解决了这个问题。