2017-08-29 1 views
0

Meine iOS-App auf der LinieWo sollte SQLite Verbindung schließen - iOS App

sqlite3_exec(database, "COMMIT", 0, 0, 0); 

Nach der vollständigen Funktion wird beendet.

-(void)clearCarts 
{ 
    sqlite3_exec(database, "BEGIN", 0, 0, 0); 
    sqlite3_stmt *stmt = nil; 
    const char *sql = "DELETE FROM carts"; 
    if(sqlite3_prepare_v2(database, sql, -1, &stmt, NULL) != SQLITE_OK) 
     NSAssert1(0, @"Error:'%s'", sqlite3_errmsg(database)); 
    if (SQLITE_DONE != sqlite3_step(stmt)) 
     NSAssert1(0, @"Error:'%s'", sqlite3_errmsg(database)); 
    sqlite3_reset(stmt); 
    sqlite3_finalize(stmt); 
    sqlite3_exec(database, "COMMIT", 0, 0, 0);// terminates here 
} 

Was könnte der Grund sein, und wo ich sqlite3_close(database) als sqlite3_close(database) verwenden sollte, wird in einer beliebigen Funktion nicht verwendet werden. Bitte vorschlagen, vielen Dank im Voraus.

Antwort

0

Dies muss sein, weil Sie Ihre Datenbank nicht öffnen, um die Abfrage auszuführen, und Sie sollten nach dem Ausführen der Anweisung verwenden.

Versuchen mit folgendem Code

sqlite3 *database; 
sqlite3_stmt *selectstmt; 

if (sqlite3_open([yourDatabasePath UTF8String], &database) == SQLITE_OK) 
{ 
    NSString *sql = [NSString stringWithFormat:@"DELETE FROM carts"]; 
    const char *insert_stmt = [sql UTF8String]; 
    sqlite3_prepare_v2(database,insert_stmt, -1, &selectstmt, NULL); 
    if(sqlite3_step(selectstmt)==SQLITE_DONE) 
    { 
     NSLog(@"Delete successfully"); 
    } 
    else 
    { 
     NSLog(@"Error while Clean Database. '%s'", sqlite3_errmsg(database)); 
    } 
    sqlite3_finalize(selectstmt); 
} 
sqlite3_close(database); 
+0

Vielen Dank für die Antwort. Tatsächlich wird die Datenbank in einer anderen Funktion wie folgt geöffnet: '- (id) initContent: (NSString *) source { self = [super init]; int ret = sqlite3_open ([Quelle UTF8String], & Datenbank); if (ret! = SQLITE_OK) { sqlite3_close (Datenbank); NSLog (@ "Fehler beim Öffnen der Datenbank! Error =% i", ret); } Selbst zurückgeben; } ' – Yas

+0

Ihre Begrüßung :) –

+0

Irgendwelche anderen Vorschläge bitte :) Ich bin sehr neu zu diesem alle und müssen eine iOS App ändern. App beendet nicht immer die Zeit auf dieser Anweisung, manchmal funktioniert es gut, manchmal zu beenden. Nicht sicher, warum ist es so .. – Yas

Verwandte Themen