title: SQLite behaviour on INSERT on iPhone
body: <p>I'm currently doing the following as part of my iPhone application</p>
  
  <pre><code>NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
  NSString *documentsPath = [paths objectAtIndex:0];
  NSString *filePath = [documentsPath stringByAppendingPathComponent:@"cities.sqlite"];
  
  sqlite3 *database;
  
  if(sqlite3_open([filePath UTF8String], &amp;database) == SQLITE_OK) {
     const char *sqlStatement = "insert into table (name, description, image) VALUES (?, ?, ?)";
     sqlite3_stmt *compiledStatement;
     if(sqlite3_prepare_v2(database, sqlStatement, -1, &amp;compiledStatement, NULL) == SQLITE_OK)    {
        sqlite3_bind_text( compiledStatement, 1, [name UTF8String], -1, SQLITE_TRANSIENT);
        sqlite3_bind_text( compiledStatement, 2, [description UTF8String], -1, SQLITE_TRANSIENT);
        NSData *dataForImage = UIImagePNGRepresentation(image);
        sqlite3_bind_blob( compiledStatement, 3, [dataForImage bytes], [dataForImage length], SQLITE_TRANSIENT);
  
     }
     if(sqlite3_step(compiledStatement) != SQLITE_DONE ) {
        NSLog( @"Error: %s", sqlite3_errmsg(database) );
     } else {
        NSLog( @"Insert into row id = %d", sqlite3_last_insert_rowid(database));
     }
     sqlite3_finalize(compiledStatement);
  }
  sqlite3_close(database);
  </code></pre>
  
  <p>What's confusing me is that if I take out the section,</p>
  
  <pre><code>   if(sqlite3_step(compiledStatement) != SQLITE_DONE ) {
        NSLog( @"Error: %s", sqlite3_errmsg(database) );
     } else {
        NSLog( @"Insert into row id = %d", sqlite3_last_insert_rowid(database));
     }
  </code></pre>
  
  <p>the the INSERT isn't saved to the database and gets lost. I'm presuming I'm missing something obvious here?</p>