Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/136.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在QTextEdit面板中附加select查询结果?_C++_Qt_Sqlite - Fatal编程技术网

C++ 如何在QTextEdit面板中附加select查询结果?

C++ 如何在QTextEdit面板中附加select查询结果?,c++,qt,sqlite,C++,Qt,Sqlite,我在一个项目中工作,我需要执行一个select查询(我使用sqlite作为sql引擎)并将结果加载到QTextEdit(我使用QT作为图形界面)。 目前,我只编写了以下代码(但我仍停留在需要将结果附加到QTextEdit的部分): //将查询打印到控制台的回调函数 int db_files::CallBack(void*notUsed,int argc,char**argv,char**azColName){ 有关(int i=0;i的详细信息,请参阅中的sqlite3\u exec()函数的概

我在一个项目中工作,我需要执行一个select查询(我使用sqlite作为sql引擎)并将结果加载到QTextEdit(我使用QT作为图形界面)。
目前,我只编写了以下代码(但我仍停留在需要将结果附加到QTextEdit的部分):

//将查询打印到控制台的回调函数
int db_files::CallBack(void*notUsed,int argc,char**argv,char**azColName){

有关(int i=0;i的详细信息,请参阅中的
sqlite3\u exec()
函数的概要:

如您所见,第4个参数是一个用户定义的参数,将传递给
callback()
函数

因此,您也需要使用它与您的呼叫代码交互:

//Callback function to print the query to the console
int db_files::CallBack(void *myQTextEdit, int argc, char **argv, char **azColName) {
    QTextEdit* qTextEdit = (QTextEdit*)myQTextEdit;

    for(int i = 0; i<argc; i++) {
        // Add the results to qTextEdit as needed ...
    }
    return 0;
}

这是C-style API在回调函数中与用户代码交互的一种非常常见的方式。

能否请您使用缩进正确地格式化代码,以便我们能够轻松阅读?此外,您的代码中没有QTextEdit,因此我们无法知道在何处追加。我是否正确地假设您希望以缩进方式将您的printf追加到终端QTextEdit?我在运行代码时遇到两个错误:第一个是从void到QTextEdit的转换(在回调函数中)…似乎没有一个方法来执行该转换。第二个问题是在第四个参数(在sqlite3_exec函数中)中,&myQTextEdit未被识别…@zDoes“&myQTextEdit未被识别”当然,你必须把你的
QTextEdit
控制成员的名字放在那里。你不能期望你拿我的例子来说,它是开箱即用的。这只是为了向你解释它的工作原理。谢谢,我没有看到它……但是在回调函数中,QTextEdit*QTextEdit=(QTextEdit)myQTextEdit;仍然生成强制转换错误…@zDoes抱歉,这是我示例中的一个输入错误,应该是:
(QTextEdit*)myQTextEdit;
。谢谢!您的解决方案有效…您保存了我的项目!:D
int sqlite3_exec(
  sqlite3*,                                  /* An open database */
  const char *sql,                           /* SQL to be evaluated */
  int (*callback)(void*,int,char**,char**),  /* Callback function */
  void *,                                    /* 1st argument to callback */
  char **errmsg                              /* Error msg written here */
);
//Callback function to print the query to the console
int db_files::CallBack(void *myQTextEdit, int argc, char **argv, char **azColName) {
    QTextEdit* qTextEdit = (QTextEdit*)myQTextEdit;

    for(int i = 0; i<argc; i++) {
        // Add the results to qTextEdit as needed ...
    }
    return 0;
}
//Function where I open the database and run the query
void custHandler::show_all() {
     rc = sqlite3_open("database.db", &db);
     if(rc != SQLITE_OK) {
          sqlite3_close(db);
          exit(1);
      }
      sqlCust = "SELECT * FROM DB";
      rc = sqlite3_exec(db, sqlCust, CallBack, &myQTextEdit, &ErrMsg);
                                            // ^^^^^^^^^^^^

      if (rc != SQLITE_OK) {
          exit(1);
      }
      sqlite3_free(ErrMsg);
      sqlite3_close(db);
}