C++ 格式化sqlite3_执行结果
您好,我如何格式化C++ 格式化sqlite3_执行结果,c++,c,sqlite,C++,C,Sqlite,您好,我如何格式化 sql = "SELECT * from COMPANY ORDER BY ID"; rc = sqlite3_exec(db, sql, callback, (void*)data, &zErrMsg); 我看到这里有控制台命令 所以我试过了 std::string c3 = "sqlite>.header on"; std::string c1 = "sqlite>.mode column"; cout <&l
sql = "SELECT * from COMPANY ORDER BY ID";
rc = sqlite3_exec(db, sql, callback, (void*)data, &zErrMsg);
我看到这里有控制台命令
所以我试过了
std::string c3 = "sqlite>.header on";
std::string c1 = "sqlite>.mode column";
cout << system(c3.c_str()) << endl;
cout << system(c1.c_str()) << endl;
std::string c3=“sqlite>.header on”;
std::string c1=“sqlite>.mode column”;
cout您无法从sqlite3
用户程序控制格式,因此使用system()
调用它将无法控制C API
您应该使用回调
函数执行此操作。同样:
静态int回调(void*data,int argc,char**argv,char**azColName){
int i;
fprintf(标准字符,“%s:”,(常量字符*)数据);
for(i=0;isqlite>.header on
不是有效的shell命令。由于每个系统将在新的shell中启动sqlite3
,因此它不会以这种方式工作。您不应该将sqlite3
用户程序命令与C API混合使用,因为它不会工作。您应该接收结果并使用printf()对其进行格式化
或任何你想要的。您好,这给了我这个结果:不是我想要的表格格式,我做错了什么吗?想要的结果:
static int callback(void *data, int argc, char **argv, char **azColName){
int i;
fprintf(stderr, "%s: ", (const char*)data);
for(i = 0; i<argc; i++){
printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");
}
printf("\n");
return 0;
}