Riscontro problemi con l'eliminazione di una riga / record di dati da un database SQLite situato su iPhone. Ho seguito i consigli forniti di seguito inviare, ma il codice risultato di SQLite è 5. Dal manuale di riferimento di SQLite, 5 significa:
SQLITE_BUSY 5 / * Il file di database è bloccato * /
Qualcun altro ha riscontrato questo problema o ha qualche idea del perché questo sarebbe il caso?
Ecco un estratto del mio codice (dbrc è impostato su 5):
NSString *retrievedContactID = [archivedContact objectForKey:@"contact_id"];
sqlite3 *database = [FollowUPAppDelegate checkAndCreateDatabase];
NSString *deleteSQL = [NSString stringWithFormat:@"DELETE FROM Contacts WHERE contact_id = %@", retrievedContactID];
const char *delete_stmt = [deleteSQL UTF8String];
sqlite3_stmt *compiledStatement;
int dbrc; //database return code
dbrc = sqlite3_prepare_v2(database, delete_stmt, -1, &compiledStatement, NULL);
dbrc = sqlite3_step(compiledStatement);
sqlite3_finalize(compiledStatement);
compiledStatement = NULL;
if (dbrc != 101) { //anything except 101 (SQLITE_DONE for delete, *not* SQLITE_OK)
NSLog(@"Error deleting contact from database: result code %i", dbrc);
return;
}
else {
NSLog(@"deleted the customer from datasets");
}
sqlite3_close(database);
risposte:
1 per risposta № 1Questo significa. il tuo database viene utilizzato da altri processi. devi interrompere l'altro processo e procedere. Posso darti un esempio. quando si accede a un database dalla propria app e se si tenta di modificare il contenuto utilizzando un gestore sqlite esterno, viene visualizzato questo errore di occupato. La soluzione a questo problema è, fermare l'app e provare.
Il tuo problema è simile. Il tuo database è bloccato da qualche altro processo.