public ActionResult Index(string providerName, int? queries) { List<World> worlds = new List<World>(queries ?? 1); using (DbConnection connection = CreateConnection(providerName)) { connection.Open(); using (DbCommand command = connection.CreateCommand()) { command.CommandText = "SELECT * FROM World WHERE id = @ID"; Random random = new Random(); for (int i = 0; i < worlds.Capacity; i++) { int randomID = random.Next(0, 10000) + 1; DbParameter parameter = command.CreateParameter(); parameter.ParameterName = "@ID"; parameter.Value = randomID; command.Parameters.Clear(); command.Parameters.Add(parameter); using (DbDataReader reader = command.ExecuteReader(CommandBehavior.SingleRow)) { if (reader.Read()) { World world = new World(); world.id = reader.GetInt32(0); world.randomNumber = reader.GetInt32(1); worlds.Add(world); } } } } } return queries != null ? Json(worlds, JsonRequestBehavior.AllowGet) : Json(worlds[0], JsonRequestBehavior.AllowGet); }
private static string Updates(HttpListenerRequest request, HttpListenerResponse response) { Random random = new Random(); List<World> worlds = new List<World>(GetQueries(request)); using (DbConnection connection = CreateConnection(request)) { connection.Open(); using (DbCommand selectCommand = connection.CreateCommand(), updateCommand = connection.CreateCommand()) { selectCommand.CommandText = "SELECT * FROM World WHERE id = @ID"; updateCommand.CommandText = "UPDATE World SET randomNumber = @Number WHERE id = @ID"; for (int i = 0; i < worlds.Capacity; i++) { int randomID = random.Next(0, 10000) + 1; int randomNumber = random.Next(0, 10000) + 1; DbParameter idParameter = selectCommand.CreateParameter(); idParameter.ParameterName = "@ID"; idParameter.Value = randomID; selectCommand.Parameters.Clear(); selectCommand.Parameters.Add(idParameter); World world = null; // Don't use CommandBehavior.SingleRow because that will make the MySql provider // send two extra commands to limit the result to one row. using (DbDataReader reader = selectCommand.ExecuteReader()) { if (reader.Read()) { world = new World { id = reader.GetInt32(0), randomNumber = reader.GetInt32(1) }; } } DbParameter idUpdateParameter = updateCommand.CreateParameter(); idUpdateParameter.ParameterName = "@ID"; idUpdateParameter.Value = randomID; DbParameter numberParameter = updateCommand.CreateParameter(); numberParameter.ParameterName = "@Number"; numberParameter.Value = randomNumber; updateCommand.Parameters.Clear(); updateCommand.Parameters.Add(idUpdateParameter); updateCommand.Parameters.Add(numberParameter); updateCommand.ExecuteNonQuery(); world.randomNumber = randomNumber; worlds.Add(world); } } } response.ContentType = "application/json"; return new JavaScriptSerializer().Serialize( worlds.Count > 1 ? (Object)worlds : (Object)worlds[0]); }
public ActionResult Update(string providerName, int? queries) { List<World> worlds = new List<World>(Math.Max(1, Math.Min(500, queries ?? 1))); using (DbConnection connection = CreateConnection(providerName)) { connection.Open(); using (DbCommand selectCommand = connection.CreateCommand(), updateCommand = connection.CreateCommand()) { selectCommand.CommandText = "SELECT * FROM World WHERE id = @ID"; updateCommand.CommandText = "UPDATE World SET randomNumber = @Number WHERE id = @ID"; for (int i = 0; i < worlds.Capacity; i++) { int randomID = random.Next(0, 10000) + 1; int randomNumber = random.Next(0, 10000) + 1; DbParameter idParameter = selectCommand.CreateParameter(); idParameter.ParameterName = "@ID"; idParameter.Value = randomID; selectCommand.Parameters.Clear(); selectCommand.Parameters.Add(idParameter); World world = null; // Don't use CommandBehavior.SingleRow because that will make the MySql provider // send two extra commands to limit the result to one row. using (DbDataReader reader = selectCommand.ExecuteReader()) { if (reader.Read()) { world = new World { id = reader.GetInt32(0), randomNumber = reader.GetInt32(1) }; } } if (world == null) continue; DbParameter idUpdateParameter = updateCommand.CreateParameter(); idUpdateParameter.ParameterName = "@ID"; idUpdateParameter.Value = randomID; DbParameter numberParameter = updateCommand.CreateParameter(); numberParameter.ParameterName = "@Number"; numberParameter.Value = randomNumber; updateCommand.Parameters.Clear(); updateCommand.Parameters.Add(idUpdateParameter); updateCommand.Parameters.Add(numberParameter); updateCommand.ExecuteNonQuery(); world.randomNumber = randomNumber; worlds.Add(world); } } } return Json(worlds, JsonRequestBehavior.AllowGet); }