簡體   English   中英

iOS-sqLite不刪除行

[英]ios- sqLite not deleting rows

我試圖刪除數據庫中的所有行,因為我編寫了以下代碼..

- (id)init {
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *databasePath = [documentsDirectory stringByAppendingPathComponent:@"dataBase.sqlite3"];
    bool databaseAlreadyExists = [[NSFileManager defaultManager] fileExistsAtPath:databasePath];
    if (!databaseAlreadyExists){
        NSString *databasePathFromApp = [[NSBundle mainBundle] pathForResource:@"dataBase" ofType:@"sqlite3"];
        [[NSFileManager defaultManager] copyItemAtPath:databasePathFromApp toPath:databasePath error:nil];
    }
    if (sqlite3_open([databasePath UTF8String], &_database) == SQLITE_OK){
    }
    return self;
}
-(void)deleteAll{
    NSString *query = @"DELETE FROM user_info";
    sqlite3_stmt *statement = nil;
    if (sqlite3_prepare_v2(_database, [query UTF8String], -1, &statement, nil) == SQLITE_OK) {
        NSLog(@"Should delete..");
    }
    sqlite3_finalize(statement);
    sqlite3_close(_database);
}

但是當我重建應用程序數據時,會出現數據。 我在做什么錯?

如果有條件,請嘗試以下條件:

if(sqlite3_prepare_v2(database, sql, -1, &deletestmt, NULL) != SQLITE_OK)

您永遠不會調用sqlite3_step來實際執行查詢。

此外,您在錯誤的位置關閉數據庫。 您的平倉應與平倉相反。

首先,在打開數據庫后獲取數據庫路徑

NSString *dbPath1=[SqliteManager getDataBasePath];
if (sqlite3_open([dbPath1 UTF8String], &database) == SQLITE_OK)
{
    NSLog(@"opened the data base");
    const char *sql = "delete from travels";
if(sqlite3_prepare_v2(database, sql, -1, &deletestmt, NULL) == SQLITE_OK)
        if(SQLITE_DONE != sqlite3_step(deletestmt))
            NSAssert1(0, @"Error while deleting. '%s'", sqlite3_errmsg(database));
        else
            isdeleted=YES;
}
sqlite3_reset(deletestmt); 
sqlite3_close(database);

write in ur method inside..... 
Getting Database Path....
+(NSString *)getDataBasePath
 {  
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory , NSUserDomainMask, YES);
NSString *documentsDir = [paths objectAtIndex:0];
NSLog(@"file Path is %@",documentsDir);
return [documentsDir stringByAppendingPathComponent:@"Give ur Sqlite Filename"];    
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM