Из таблицы SQlite ничего не извлекается? - PullRequest
1 голос
/ 30 марта 2009
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. Если я использую одно из других утверждений, закомментированных там, оно работает как положено, печатая выбранный запрос.
Что отличается от max и min в запросе, что он не может извлечь значения? Разве это не в табличном формате?
Кроме того, я протестировал строку запроса о проблеме в браузере базы данных SqLite в той же базе данных, и она работает, отображая два минимальных и максимального значения.

Любые предложения будут с благодарностью.

Спасибо.

Ответы [ 2 ]

2 голосов
/ 30 марта 2009

Попробуйте распечатать возвращенные имена столбцов. Может быть, они не равны «Start» и «End», как вы предполагали?

0 голосов
/ 30 марта 2009

Может быть, вам следует добавить пробел между MAX (End) и FROM?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...