2010-10-21 7 views
0

Je souhaite utiliser la requête de mise à jour SQLite pour mettre à jour la base de données dans l'iPhone.Mise à jour iPhone SQLite DB

Quelqu'un pourrait-il me fournir le code comment faire cela?

Répondre

0
+ (BOOL)UpDateGetAvailableContentObjects:(NSMutableDictionary*)availableReportsDict 

{ 
    //The following two lines of code are sure to be called because this method has to be called. 
    //So these two lines will set the static database variable for use in future as well in add, delete, update functions. 

htmlReportAppDelegate *appDelegate = (htmlReportAppDelegate *) 
[[UIApplication sharedApplication] delegate]; 

database = appDelegate.database; 

const char *sqlStatement = "insert into 

GetAvailableContentObjectsTable(contentID,id,lastUpdate,name,typeid,subpages) Values(?,?,?,?,?,?)"; 

int success; 

if(sqlite3_prepare_v2(database, sqlStatement, -1, &get_statement, NULL) == SQLITE_OK) 

{ 


sqlite3_bind_text(get_statement, 1, [[availableReportsDict valueForKey:@"pages"] UTF8String], -1, SQLITE_TRANSIENT); 

sqlite3_bind_text(get_statement, 2, [[availableReportsDict valueForKey:@"id"] UTF8String], -1, SQLITE_TRANSIENT); 

sqlite3_bind_text(get_statement, 3, [[availableReportsDict valueForKey:@"lastUpdate"] UTF8String], -1, SQLITE_TRANSIENT); 

sqlite3_bind_text(get_statement, 4, [[availableReportsDict valueForKey:@"name"] UTF8String], -1, SQLITE_TRANSIENT); 

sqlite3_bind_int(get_statement, 5, [[availableReportsDict valueForKey:@"typeid"]intValue]); 

sqlite3_bind_int(get_statement, 6, [[availableReportsDict valueForKey:@"subpages"]intValue]); 


success = sqlite3_step(get_statement); 


if (success == SQLITE_ERROR) { 

NSAssert1(0, @"Error: failed to insert into the database with message '%s'.", sqlite3_errmsg(database)); 

} 

} 

else { 

NSAssert1(0, @"Error: failed to prepare statement with message '%s'.", sqlite3_errmsg(database)); 

} 

// Release the compiled statement from memory 

sqlite3_finalize(get_statement); 

get_statement = nil; 

return success; 

} 
1

Compte tenu d'une base de données déjà ouverte:

static sqlite3_stmt *update_progress_statement = nil; 

- (void) setProgress:(int)newProgress forKey:(int)key { 
    if (update_progress_statement == nil) { 
     const char *sql = "UPDATE progress SET value = ? WHERE key = ?"; 
     if (sqlite3_prepare_v2(database, sql, -1, &update_progress_statement, NULL) != SQLITE_OK) { 
      NSLog(@"Error: failed to prepare update_progress_statement with message '%s'.",sqlite3_errmsg(database)); 
      return; 
     } 
    } 
    sqlite3_bind_int(update_progress_statement, 1, newProgress); 
    sqlite3_bind_int(update_progress_statement, 2, key); 
    int success = sqlite3_step(update_progress_statement); 
    if (success == SQLITE_ERROR){ 
     NSLog(@"Error: failed to update update_progress_statement with message '%s'.", sqlite3_errmsg(database)); 
    } 
    sqlite3_reset(update_progress_statement); 
} 
+0

Merci Vincent, bien pourriez-vous aussi savoir que la façon de l'utiliser pour mettre à jour les champs, comme je change les données dans les textfiedlds et que vous souhaitez mettre à jour avec votre code. comment faire cela ... s'il vous plaît aidez-moi ... ai-je besoin de créer un dictionnaire ou ce que juste me fournir avec le code entier ou vous pouvez même m'envoyer un email à [email protected] – Sabby