2012-11-06 61 views
-2

編輯: -這是我不得不工具: -刪除所有在表中iPhone SDK中的記錄與sqlite3的

- (void) Delete_LoginData { 
    sqlite3 *database; 
    if(sqlite3_open([self.databasePath UTF8String], &database) == SQLITE_OK) 
    { 
     const char *sql = "DELETE FROM Login"; 
     sqlite3_stmt *statement; 
     if(sqlite3_prepare_v2(database, sql,-1, &statement, NULL) == SQLITE_OK) 
     { 
      sqlite3_reset(statement); 
     }  
    } 
} 

我想從數據庫中刪除所有行的一個click.I有實施以下方法: -

- (void) Delete_LoginData { 
     sqlite3 *database; 
     if(sqlite3_open([self.databasePath UTF8String], &database) == SQLITE_OK) { 
      const char *sql = "DELETE * FROM Login"; 
      sqlite3_stmt *statement; 

      statement = [self PrepareStatement:sql];  
      // int a1 = sqlite3_bind_int(statement, 1, 1); 

      sqlite3_step(statement); 
      sqlite3_reset(statement); 
     }  
    } 

    -(sqlite3_stmt*) PrepareStatement:(const char *)sql{ 
     // Setup the database object 
     sqlite3 *database; 
     // Init the animals Array 

     // Open the database from the users filessytem 
     if(sqlite3_open([self.databasePath UTF8String], &database) == SQLITE_OK) { 
      // Setup the SQL Statement and compile it for faster access 
      const char *sqlStatement = sql; 
      sqlite3_stmt *compiledStatement; 

      if(sqlite3_prepare_v2(database, sqlStatement,-1, &compiledStatement, NULL) == SQLITE_OK) { 
       //NSLog(@"COMPILED STATEMENT: %@",compiledStatement); 
       return compiledStatement; 

      } 
     } 
     return nil; 
    } 

但它不工作。 我得到這個聲明0X0 = [自我PrepareStatement:sql];在delete_logindata方法中使用 。

如何解決這個問題。 有沒有解決方案?

回答

1

請更改喜歡你的方法:

- (void) Delete_LoginData 
{ 
     sqlite3 *database; 
     if(sqlite3_open([self.databasePath UTF8String], &database) == SQLITE_OK) 
     { 
      const char *sql = "DELETE FROM Login"; 
      sqlite3_stmt *statement; 
      if(sqlite3_prepare_v2(database, sql,-1, &statement, NULL) == SQLITE_OK) 
      { 
       sqlite3_step(statement); 
      }  
     } 
} 

在你的代碼是打開數據庫的兩倍。在第二種方法中,您打開一個已經打開的數據庫! 我不知道這是否是真正的問題,但我會建議不要這樣做。

+0

Midhun這是什麼sqlStatement在這裏? –

+0

@shweta:對不起,我編輯了我的答案。我只是複製你的代碼,我忘了改變那個變量:) –

+0

@shweta:仍然有問題? –

1

const char *sql = "DELETE FROM Login";的const char *sql = "DELETE * FROM Login";

1
,而不是

更改爲const char * SQL

const char *sql = "DELETE * FROM Login"; 

變化上面這個

const char *sql = "DELETE FROM Login";