2011-02-21 11 views
5

SQLiteデータベースからすべてのレコードを削除する方法。SQLite for iPhoneからレコードを削除する方法

+(BOOL)deleteFromtbl { 
     sqlite3 *database; 
     BOOL retValue = YES; 
     if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK) { 
      const char *sqlStatement = "Delete from tbl"; 
      sqlite3_stmt *compiledStatement; 
      retValue = sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStatement, NULL); 
      sqlite3_finalize(compiledStatement); 
     } 
     sqlite3_close(database); 

     return retValue;   
    } 

これらのコードは私にとっては機能しませんでした。

ありがとうございます。

+0

それが失敗したので

使用?呼び出したすべての関数から戻り値を確認することをお勧めします。さらに、SQLクエリは通常、セミコロンで ';'で終わりますが、SQL文はセミコロンではありません。それは意図的なのでしょうか? SQLite3はセミコロンを残すことができますか? – sarnold

+0

@sarnold私がチェックしたものすべてが正しい。そしてiShuはすでに私に解決策を提供していて、私のために働いています。ありがとう –

答えて

4

sqlite3_stepこの関数は、コンパイルステートメントを準備した後に必要です。このよう

+(BOOL)deleteFromtbl { 
     sqlite3 *database; 
     BOOL retValue = YES; 
     if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK) { 
      const char *sqlStatement = "Delete from tbl"; 
      sqlite3_stmt *compiledStatement; 
      retValue = sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStatement, NULL); 
if(SQLITE_DONE != sqlite3_step(compiledStatement))//add this line 
    { 
     NSLog(@"Error while inserting data. '%s'", sqlite3_errmsg(database)); 
     return NO; 
    } 
      sqlite3_finalize(compiledStatement); 
     } 
     sqlite3_close(database); 

     return retValue;   
    } 
関連する問題