CHAPTER 11 EXERCISE SOLUTIONS
Answer to Question 1
The sqlite3_exec() function is actually a wrapper for the three functions sqlite3_prepare(); sqlite3_step(); and sqlite3_finalize(). For nonquery SQL statements (such as for creating tables, inserting rows, and so on), it is always better to use the sqlite3_exec() function.
Answer to Question 2
To obtain a C-style string from an NSString object, use the UTF8String method from the NSString class.
Answer to Question 3
-(void) getAllRowsFromTableNamed: (NSString *) tableName { //---retrieve rows--- NSString *qsql = [NSString stringWithFormat:@“SELECT * FROM %@”, tableName]; sqlite3_stmt *statement; if (sqlite3_prepare_v2( db, [qsql UTF8String], −1, &statement, nil) == SQLITE_OK) { while (sqlite3_step(statement) == SQLITE_ROW) { char *field1 = (char *) sqlite3_column_text(statement, 0); NSString *field1Str = [[NSString alloc] initWithUTF8String: fieldl]; char *field2 = (char *) sqlite3_column_text(statement, 1); NSString *field2Str = [[NSString alloc] initWithUTF8String: field2]; NSString *str = [[NSString alloc] initWithFormat:@“%@ - @“%@ - %@”, fieldlStr, field2Str]; NSLog(@“%@”, str); [field1Str release]; [field2Str release]; [str release]; } //---deletes the compiled statement from memory--- sqlite3_finalize(statement); } }
Get Beginning iOS 5 Application Development now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.