2010-04-26 4 views
3
[sqlite executeQuery:@"UPDATE UserAccess SET Answer ='Positano';"]; 
NSArray *query2 = [sqlite executeQuery:@"SELECT Answer FROM UserAccess;"]; 
NSDictionary *dict = [query2 objectAtIndex:0]; 
NSString *itemValue = [dict objectForKey:@"Answer"]; 
NSLog(@"%@",itemValue); 

Il fait imprimer Positano à ce moment .. Mais quand je viens imprimer sans la requête de mise à jour à nouveau. Je reçois la vieille entrée qui est Paris. J'ai essayé [commit sqlite]; qui ne fonctionne pas non plus. Même si je crée une table simple, elle s'exécute la première fois puis quand j'appuie sur le bouton créer, elle dit que la table existe déjà MAIS quand je relance, elle crée à nouveau la table au lieu de me donner une erreur.Les déclarations ne sont pas se sont engagés dans sqlite3 lors de l'utilisation de l'enveloppe

Qu'est-ce que je fais mal ??? J'utilise l'emballage http://th30z.netsons.org/2008/11/objective-c-sqlite-wrapper/ .

Cordialement, Novice

Répondre

0
-(void)createEditableCopyOfDatabaseIfNeeded 
{ 
    // Testing for existence 
    BOOL success; 
    NSFileManager *fileManager = [NSFileManager defaultManager]; 
    NSError *error; 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 
    NSString *writableDBPath = [documentsDirectory stringByAppendingPathComponent:@"MyDatabase.sqlite"]; 
    success = [fileManager fileExistsAtPath:writableDBPath]; 
    if (success) return; 
    // The writable database does not exist, so copy the default to the appropriate location. 
    NSString *defaultDBPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"MyDatabase.sqlite"]; 
    success = [fileManager copyItemAtPath:defaultDBPath toPath:writableDBPath error:&error]; 
    if(!success) 
    { 
     NSAssert1(0,@"Failed to create writable database file with Message : '%@'.",[error localizedDescription]); 
    } 
} 

Dans xxxxAppdelegate.m

C'était la solution

2

Il semble que vous n'avez pas commis la transaction.

Dans le fichier Sqlite.m, il existe des méthodes beginTransaction et commit. Ou vous pouvez essayer de définir le db en mode autocommit.

+1

Comment puis-je faire cela? –

+0

@Krab .. pourriez-vous s'il vous plaît me donner un exemple. Je suis désolé .. Je suis nouveau à l'objectif C –

Questions connexes