title: Sqlite database locked error - iOS
body: <p>I'm using sqlite to use insert and update the data in table view. I can able to update the data only once, on the next attempt it showing database locked. Even though am closing the database, please help. Below is the code.</p>
  
  <pre><code>-(void)saveUserCredential: (NSString *)email :(NSString *)userName :(NSString *)loginTime :(NSString *)source
  {
  NSDateFormatter *dateformate=[[NSDateFormatter alloc]init];
  [dateformate setDateFormat:@"yyyy-MM-dd HH:mm"]; // Date formater
  NSString *todayDate = [dateformate stringFromDate:[NSDate date]];
  
  const char *dbpath = [databasePath UTF8String];
  if (sqlite3_open(dbpath, &amp;database) == SQLITE_OK)
  {
      NSString  * query = @"SELECT * from users";
      int rc =sqlite3_prepare_v2(database, [query UTF8String], -1, &amp;statement, NULL);
      if(rc == SQLITE_OK)
      {
          if(sqlite3_step(statement) == SQLITE_ROW)
          {
  
                NSString *updateSQL = [NSString stringWithFormat:@"update users set email = '%@', username = '%@', source = '%@', created = '%@' where id = '%d'",email, userName, source, todayDate,1];
  
              const char *update_stmt = [updateSQL UTF8String];
              sqlite3_prepare_v2(database, update_stmt, -1, &amp;statement, NULL );
              //sqlite3_bind_int(statement, 1, 1);
              if (sqlite3_step(statement) == SQLITE_DONE)
              {
                  NSLog(@"successfully updated");
              }
              else{
  
                  NSLog(@"Error while updating. '%s'", sqlite3_errmsg(database));
              }
  
          }
          else
          {
              NSString *insertSQL = [NSString stringWithFormat:@"insert into users (email,username,source,created) values('%@','%@','%@','%@')",email,userName,source,todayDate];
  
              NSLog(@"INS SQL: %@", insertSQL);
              const char *insert_stmt = [insertSQL UTF8String];
              sqlite3_prepare_v2(database, insert_stmt,-1, &amp;statement, NULL);
              if (sqlite3_step(statement) == SQLITE_DONE)
              {
                  NSLog(@"INSERTED");
              }
              else
              {
                  NSLog(@"NOT INSERTED");
              }
              NSLog(@"hello ");
  
          }
          sqlite3_finalize(statement);
          sqlite3_close(database);
  
      }
  
  }
  
  }
  </code></pre>