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;i
sqlite>.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;
}