2016-06-04 1 views
0

J'ai écrit la requête d'insertion SQLITE pour insérer des données dans la table de base de données sqlite. Mais maintenant j'essaye d'ajouter une nouvelle colonne dans cette table de sqlite et en insérant de nouvelles valeurs à cette colonne. Alors que chaque fois que j'essaie de mettre à jour ma table de base de données, il faut créer une nouvelle colonne à chaque fois et mettre à jour et me donner de nouvelles valeurs insérées. Ci-dessous est mon alter et le code de mise à jour que je fais sur le clic d'un bouton.Alter Sqlite Table de base de données et requête de mise à jour pour iOS

-(void)updateStatusData:(NSString *)txt { 

sqlite3_stmt *statement; 
dirPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
docsDir = [dirPaths objectAtIndex:0]; 
databasePath = [docsDir stringByAppendingPathComponent:@"db.sqlite"]; 

NSLog(@"%@",databasePath); 
if (sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK) 
{ 



    NSString *updateSQL = [NSString stringWithFormat:@"ALTER TABLE STATUS ADD COLUMN newcolumn; UPDATE STATUS SET newcolumn=%@ WHERE rowid=1",txt]; 

    const char *update = [updateSQL UTF8String]; 
    NSLog(@"update statmnt %s",update); 
    sqlite3_prepare_v2(database, update, -1, &statement, NULL); 
    if (sqlite3_step(statement) == SQLITE_DONE) 
    { 
     sqlite3_bind_text(statement, 1, [txt UTF8String], -1, SQLITE_TRANSIENT); 
     NSLog(@" Status Results Updated Successfully"); 

    } else { 
     NSLog(@"error %s",sqlite3_errmsg(database)); 
    } 
    sqlite3_finalize(statement); 
    sqlite3_close(database); 
} 
} 

Mon nouveau nom de colonne est newcolumn et les valeurs qu'il doit enregistrer sont 'txt'. Ma question est quand je lance ce code, je reçois une nouvelle colonne insérée dans ma table de base de données sqlite. Mais la valeur insérée est NULL pour cette nouvelle colonne. Le code devrait fonctionner exactement quand vous mettez à jour votre statut sur WHATSAPP, il sauve l'état mis à jour ... S'il vous plaît aidez-moi ce que je fais mal. Toute aide est appréciée.

+0

assurez-vous que txt n'est pas nul – Alok

+0

Vous pouvez également avoir besoin de fournir des guillemets: 'UPDATE STATUS SET newcolumn = '% @' OERE rowid = 1", txt' –

+0

@Alok oui je l'ai vérifié, il n'est pas nul. –

Répondre

0

N'exécutez pas les deux requêtes ensemble. faire une requête séparée de deux pour ajouter une colonne et une pour mettre à jour la table. Alors lancez deux déclarations différentes au lieu d'une.

+0

Faire deux requêtes différentes a fonctionné pour moi Merci pour la suggestion @Lion –

+0

Vous êtes les bienvenus .... :) – Lion