2010-08-18 85 views
0

我想爲我的iPhone應用程序使用sqlite3。但它不起作用。方案是: - 在按鈕的單擊事件上,方法應該運行並從數據庫檢索數據。但我的程序序列不會進入sqlite3不能在我的iphone應用程序中工作

if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK) { 
    const char *sqlStatement = "select * from records"; 
    sqlite3_stmt *compiledStatement; 
    0NSLog(@"%s", sqlite3_errmsg(database)); // Results - no error 
- 
    if(sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStatement, NULL) == SQLITE_OK) { 
//here NSLog statement does not work. 

打開數據庫沒有問題。應該是什麼原因?任何可觀的解決方案。 謝謝

回答

0

下面是我自己的代碼修改例如:

NSString *file = @"youdatabase.db" 
    sqlite3 *db;  
    if(sqlite3_open([file UTF8String], &db) == SQLITE_OK) 
    { 
    NSString *req = @"SELECT * FROM totoTable"; 
    sqlite3_stmt *returnReq; 

    if(sqlite3_prepare(db, [req cStringUsingEncoding:NSUTF8StringEncoding], -1, &returnReq, NULL) == SQLITE_OK) 
    { 
     while (sqlite3_step(returnReq) == SQLITE_ROW) 
     { 
     //Printf first returned value 
     NSLog(@"%s", (char*)sqlite3_column_text(returnReq, 0)); 
     }  
    } 
    sqlite3_close(db); 
    } 

希望它會幫助你;-)

1

試試這個:NSLog(@"%s", sqlite3_errmsg(database));,看看你的查詢是否有一些錯誤。

+0

沒有錯誤......我編輯我的問題,你可以有一個更好的認識。 – user12345 2010-08-18 13:03:13

+0

正如我從你的代碼可以看出,你的if語句不返回SQLITE_OK。 我使用sqlite3,我已經把它分成兩個塊,首先我做了準備,沒有if,然後我使用'while(sqlite3_step(compiledStatement)== SQLITE_ROW)'循環遍歷結果。試着看看它是否做出任何改變。 – Simon 2010-08-18 13:26:14

+0

@alis:你的NSLog在錯誤的地方。你想看看準備中的錯誤信息是什麼。把它放在你的if的其他部分。 – JeremyP 2010-08-18 15:58:24

相關問題