2012-02-17 4 views
0

Я работаю над базой данных SQLite. Я вставляю данные в базу данных, это нормально. Но я хочу, чтобы удалить данные из базы данных ее не работает, я думаю, что я делаю не так, где некоторые Ниже мой код, пожалуйста, какой-либо один помочь мне:Как удалить данные таблицы из базы данных SQLite в iPhone

-(IBAction)deleteData { 

NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDir = [documentPaths objectAtIndex:0]; 
NSString *databasePath=[documentsDir stringByAppendingPathComponent:@"paddleEight.sqlite"]; 
NSLog(@"The Database Path is---> %@", databasePath); 

sqlite3_stmt *compiledStatement; 
sqlite3 *db; 
NSString *sqlStatement = @"DELETE from GalleryTabel;"; 


if (sqlite3_open([databasePath UTF8String], &db) == SQLITE_OK) { 


    if (sqlite3_prepare(db, [sqlStatement UTF8String], -1, &compiledStatement, NULL) == SQLITE_OK) { 

     UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"record" message:@"record Deleted" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
     [alert show]; 
     [alert release]; 
     alert=nil; 
    } 
    sqlite3_finalize(compiledStatement); 
} 
} 
+0

Вы пишете GalleryTable неправильно, например GalleryTabel? –

+0

спасибо, что ответил @Toby Allen, но я написал одно и то же имя. скажи мне логическую ошибку. – iPhone4s

+0

@ iPhone4s Есть ли шанс, что вы можете поделиться с нами ошибкой? –

ответ

5

NSLog(@"Error=%s",sqlite3_errmsg(&db) Попробуйте войти, посмотреть, если есть какие-либо ошибки. Проверьте, входит ли он внутри sqlite3_open statement.

И я никогда не использовал точку с запятой, чтобы закончить инструкцию delete, мои знания в sqlite очень ограничены. Но я всегда использовал NSString *sqlStatement = @"DELETE from GalleryTabel"; Обратите внимание, что точка с запятой удалена.

И попробуйте использовать exec вместо prepare,step,finalize метод.

Например:

NSString*deleteSQL=[NSString stringWithFormat:@"delete from GalleryTabel"]; 
const char*deleteStmt=[deleteScoreSQL UTF8String]; 
char*errMsg=nil; 

     if(sqlite3_exec(db, deleteScoreStmt, NULL, NULL, &errMsg)==SQLITE_OK) 
     { 
      NSLog(@"Deleted table"); 
     } 

Надеется, что это помогает.

Смежные вопросы