2012-06-27 10 views
5

Estoy trabajando en la aplicación iPhone y llamando al siguiente código en mi clic del botón, está actualizando mi tabla de base de datos solo al primer clic. Cuando lo hago clic por segunda vez, me da un mensaje de éxito pero la tabla de la base de datos no se actualiza.iPhone Actualización de la base de datos Problema

Código es:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"Games.sqlite"]; 

NSMutableArray *arrayRandomLevel = [[NSMutableArray alloc]initWithObjects:@"1",@"2",@"3",@"4",@"5",nil]; 
for (int i = 0; i< 5; i++) 
{ 
    NSUInteger randomIndex = arc4random() % 5; 
    [arrayRandomLevel exchangeObjectAtIndex:i withObjectAtIndex:randomIndex]; 
    //firstObject +=1;  
} 
NSLog(@"arrayRandomLevel = %@",arrayRandomLevel); 

for (int level = 0; level < 5; level++) 
{ 
    NSString *strLevel = [@"" stringByAppendingFormat:@"%d",level+1]; 
    int finalLevel = [[arrayRandomLevel objectAtIndex:level] intValue]; 

    NSLog(@"Static level = %@, Changed level = %d",strLevel,finalLevel); 

    sqlite3 *database; 
    if(sqlite3_open([path UTF8String], &database) == SQLITE_OK) 
    { 

     NSString *cmd = [NSString stringWithFormat:@"UPDATE zquestionsdata SET zdifficultylevel = %d WHERE zanswertype = '%@' AND zquestiontype = '%@';",finalLevel,strLevel,@"Geni"]; 

     const char * sql = [cmd UTF8String]; 

     sqlite3_stmt *compiledStatement; 

     if(sqlite3_prepare_v2(database, sql, -1, &compiledStatement, NULL) == SQLITE_OK) 
     { 
      sqlite3_step(compiledStatement); // Here is the added step. 
      NSLog(@"update SUCCESS - executed command %@",cmd); 
     } 
     else { 
      NSLog(@"update FAILED - failed to execute command %@",cmd); 
     } 

     sqlite3_finalize(compiledStatement); 

    } 
    else { 
     NSLog(@"pdateContact FAILED - failed to open database"); 
    } 

    sqlite3_close(database); 

} 

favor me ayude en esto, o facilitar cualquier otra solución para actualizar la tabla cada vez. Gracias de antemano.

+0

NSLog su NSString * cmd, copiar el mensaje de la consola y luego tratar de pegarlo en el navegador de base de datos SQLite para probar la consulta – janusbalatbat

+0

en esta línea zquestiontype = '% @ '; ", No creo que necesite un punto y coma allí – janusbalatbat

+1

Copio cmd y trato de ejecutar en el navegador sqlite, está trabajando allí y actualizando las filas de las tablas, pero no a través de mi función. –

Respuesta

1

el proceso de actualización ocurrirá en

si (sqlite3_step (declaración) == SQLITE_DONE)

Allí los valores asignados irá y almacenar en la base de datos de la declaración parece a la anterior.

código de declaración Preparar A continuación se da

if(sqlite3_prepare_v2(contactDB, insert_stmt, -1, &statement, NULL) == SQLITE_OK) 
    { 
     if(sqlite3_step(statement) == SQLITE_DONE) 
     { 
      //assign new values here 

     } 
    } 
+0

está trabajando la primera vez como de costumbre, desde el segundo haga clic en su entrada en el bloque if (sqlite3_step (statement) == SQLITE_DONE) pero la tabla no se está actualizando con esto. Mostrando los resultados anteriores. Quiero actualizarlo en 2 °, 3 ° y así sucesivamente. –

Cuestiones relacionadas