2011-08-10 9 views
2

私はsqlite3のapiをcで習得しようとしていますが、名前と電話機をアジェンダとして保存するテーブルを作成しました。それから私は3行でそれを設定しました。その後gcc -o agenda agenda.c -lsqlite3 -Wall -ggdbでそれをコンパイルsqliteのデータをcで取得する

#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

私はええ、それはそれだあなたの代わりに!=

+0

while (sqlite3_step(res) == SQLITE_ROW) {をしたいと考えています。私のせい! – Wanderson

関連する問題