2011-08-10 4 views
2

나는 c와 함께 sqlite3 API를 배우려고하고 다음 이름과 전화를 의제라는 테이블을 만들었습니다. 그런 다음 3 행을 채 웁니다. 그런 다음 gcc -o agenda agenda.c -lsqlite3 -Wall -ggdb로 컴파일c와 sqlite에서 데이터를 검색

#include <stdio.h> 
#include <sqlite3.h> 

int main(int argc, char **argv) 
{ 
    sqlite3 *db; 
    sqlite3_stmt *res; 
    const char *tail; 
    int count = 0; 

    if(sqlite3_open("agenda.db", &db)) 
    { 
    sqlite3_close(db); 
    printf("Can't open database: %s\n", sqlite3_errmsg(db)); 
    return(1); 
    } 

    printf("Database connection okay!\n"); 

    if(sqlite3_prepare_v2(db, "SELECT phone,name FROM agenda ORDER BY name", 128, &res, &tail) != SQLITE_OK) 
    { 
    sqlite3_close(db); 
    printf("Can't retrieve data: %s\n", sqlite3_errmsg(db)); 
    return(1); 
    } 

    printf("Reading data...\n"); 

    printf("%16s | %32s\n", "Phone", "Name"); 

    while(sqlite3_step(res) != SQLITE_ROW) 
    { 
    printf("%16s | %32s\n", 
      sqlite3_column_text(res, 0), 
      sqlite3_column_text(res, 1)); 

    count++; 
    } 

    printf("Rows count: %d\n", count); 

    sqlite3_finalize(res); 

    sqlite3_close(db); 

    return(0); 
} 

: 내 다음 단계는 다음과 같은 C 코드를 생성했다.

Database connection okay! 
Reading data... 
      Phone |        Name 
Rows count: 0 

그러나 실제로 agenda.db 파일의 3 개 행이 :하지만 얻는 결과는 항상 있습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

답변

9

나는 그게, 당신이 while (sqlite3_step(res) == SQLITE_ROW) { 대신

+0

그래 != 싶은 생각합니다. 내 잘못! – Wanderson

관련 문제