2011-10-06 4 views
0

Je ne peux pas pour la vie de moi voir ce que cela pourrait être? Aucun conseil? MerciInstruction de mise à jour SQLite effectuée sans erreur, mais la ligne de table n'est pas mise à jour?

(void)setRegId: (NSInteger) _regId 

{ 

NSInteger r_id = _regId; 
NSInteger row = 1; 

ret = sqlite3_open(dbName, &database); 
if (ret != SQLITE_OK) 
{ 
    printf("Error opening the db: %s\n", sqlite3_errmsg(database)); 
    sqlite3_close(database); 
    return; 
} 

sqlite3_stmt *compiledStatement = nil; 
if (compiledStatement == nil) { 
    const char *sql = "UPDATE RegDB Set id = ? Where rowindex = ?"; 

    if (sqlite3_prepare_v2(database, sql, -1, &compiledStatement, NULL) != SQLITE_OK) 
    { 
     NSLog(@"Error: failed to prepare compiledStatement with message '%s'.",sqlite3_errmsg(database)); 
     return; 
    } 
} 

sqlite3_bind_int(compiledStatement, 1, r_id); 
sqlite3_bind_int(compiledStatement, 2, row); 

int success = sqlite3_step(compiledStatement); 
if (success == SQLITE_ERROR){ 
    NSLog(@"Error: failed to update compiledStatement with message '%s'.", sqlite3_errmsg(database)); 
} 

sqlite3_finalize(compiledStatement); 

if(sqlite3_close(database) != SQLITE_OK) 
{ 
    NSLog(@"Error: failed to closed DB with message  '%s'.",sqlite3_errmsg(database)); 
    } 

     } 
+0

Déboguez-vous dans un simulateur ou sur un périphérique, est-il possible que vous enregistrez la mise à jour, mais en écrasant le fichier .db sur la prochaine version? – meggar

+0

im sur un périphérique. Je pense que c'est proche du problème car le même code fonctionne très bien dans un projet séparé. Je cours la méthode de mise à jour un certain nombre de fois pendant que l'application fonctionne sur l'appareil, quand je lis le contenu de la base de données ils sont toujours les valeurs par défaut définies dans le Db. Merci pour votre conseil. – null

Répondre

0

Vous devez vérifier que vous envoyez l'instruction de mise à jour correcte et que vous lisez correctement le résultat. Essayez de consigner votre déclaration finale (ou au moins les variables r_id et row). Utilisez sqlite3 ou SQLiteManager avec Firefox pour vérifier les changements dans la base de données.

Questions connexes