sql - 没有从 SQlite 表中提取任何内容?

标签 sql c sqlite

void max_min(sqlite3 *db)
{
    //call back*********
    int i, ncols;
    sqlite3_stmt *stmt;
    char *sql;
    const char *tail;
    char *zErrMsg = 0;
    int rc;
    //******************

    //min/max variables
    char min[20];
    char max[20];




    //we want only the min and max value of this table
    sql = "SELECT MIN(Start),MAX(End)FROM GMTI;"; //doesn't extract but works in GUI tool?

    //sql = "SELECT * FROM GMTI WHERE Start<16;"; //works?

    rc = sqlite3_prepare(db, sql, strlen(sql), &stmt, &tail);
        if(rc != SQLITE_OK){
            fprintf(stderr, "SQL error: %s\n", sqlite3_errmsg(db));
        }

    rc = sqlite3_step(stmt);
    ncols = sqlite3_column_count(stmt);
    printf("Number of columns: %d and row status: %d", ncols, rc);
    while(rc == SQLITE_ROW){
        for(i=0; i<ncols; i++){
                  if (strncmp("Start", sqlite3_column_name(stmt,i), strlen("Start")) == 0)
                  {
                        strncpy(min, sqlite3_column_text(stmt,i), strlen(sqlite3_column_text(stmt,i)));
                        strcpy(min + strlen(sqlite3_column_text(stmt,i)), "\0");
                        printf("min is: %s\n", min);
                        printf("<br>");
                  }  
                  if (strncmp("End", sqlite3_column_name(stmt,i), strlen("End")) == 0)
                  {
                        strncpy(max, sqlite3_column_text(stmt,i), strlen(sqlite3_column_text(stmt,i)));
                        strcpy(max + strlen(sqlite3_column_text(stmt,i)), "\0");
                        printf("max: %s\n", max);
                        printf("<br>");
                  }


         }//end for 

        fprintf(stderr, "\n");
    rc = sqlite3_step(stmt);
    }//end while

    sqlite3_finalize(stmt);

}

当我将上面的 sql 查询与 MIN 和 MAX 函数一起使用时,没有打印出 min 和 max。如果我使用那里注释掉的其他语句之一,它会按预期工作,打印选定的查询。
查询中的最大值和最小值有什么不同,它不能提取值?不是表格格式吗?
此外,我在同一数据库的 SqLite 数据库浏览器中测试了问题查询字符串,它可以正常工作,显示两个 - 最小值和最大值。

如有任何建议,我们将不胜感激。

谢谢。

最佳答案

尝试打印出返回的列名。也许它们并不像您假设的那样等于“开始”和“结束”?

关于sql - 没有从 SQlite 表中提取任何内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/698509/

相关文章:

python - 使用 sqlite OperationalError : no such column 创建函数

c# - Signalr SQL底板导致The wait operation timed out异常

mysql - 需要使用 DISTINCT、COUNT、MAX 的数据列表

mysql - Mysql 中的自动索引

c - printf 程序结束后不执行其余代码? C

c - 如何从编译的elf文件中提取所有函数,即使该函数没有符号

sqlite - 使用 py2exe 时,PyQt 应用程序无法加载 SQlite 数据库

mysql - 按大于 0 的字段排序

c - 使用 fscanf 读取 boolean 值

android - (1) "foodItems"附近 : syntax error SQLite android