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; }

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; },c++,sqlite,C++,Sqlite,我没有得到任何错误;它仅仅是输出第一行。非常感谢您的帮助。只需在exec函数结束时返回0即可 说明: 在函数“exec”中,当它不返回任何内容时,数据库服务器的行为就像函数因某种原因被终止一样,该函数被损坏并出错,因此它只是停止发送数据,因为回调函数因错误而终止。。。。所以当我们返回0时,我们说函数exec工作正常,所以它一直在发送数据。。。如果您返回任何其他整数,它将处理它,就像函数被错误终止一样,并停止发送数据。我也遇到了同样的问题,通过使回调函数exec返回0解决了这个问题。看起来您遇到了

我没有得到任何错误;它仅仅是输出第一行。非常感谢您的帮助。

只需在exec函数结束时返回0即可

说明:


在函数“exec”中,当它不返回任何内容时,数据库服务器的行为就像函数因某种原因被终止一样,该函数被损坏并出错,因此它只是停止发送数据,因为回调函数因错误而终止。。。。所以当我们返回0时,我们说函数exec工作正常,所以它一直在发送数据。。。如果您返回任何其他整数,它将处理它,就像函数被错误终止一样,并停止发送数据。我也遇到了同样的问题,通过使回调函数exec返回0解决了这个问题。

看起来您遇到了一个非空错误。如果你试着打印出错误,你会得到什么?@Shiping我什么也得不到你似乎没有犯错误。如果在之前执行if err printfNonzero会发生什么\n;在sqlite_exec?sqlite3 test.sqlite.dump的输出是什么?只有tools包。