Stack Overflow en español Asked by Jhon Alexander Jimenez Morales on January 24, 2021
actualmente quiero consumir un procedimiento almacenado que tengo en una base de datos mysql, la aplicacion es .Net core. El procedimiento almacenado necesita unos parametros, el problema esta que cuando intento utilizar este procedimiento desde la aplicacion en un foreach no hace absolutamente nada.
public bool Actualizar(string connectionStringSqlServer)
{
//obtener los registros que aun no se han actualizado en la base de datos
var result = ObtenerPagos(connectionStringSqlServer);
if (result.Count != 0)
{
string connection = "#################";
MySqlConnection mysqConexion = new MySqlConnection();
mysqConexion.ConnectionString = connection;
mysqConexion.Open();
for (int i = 0; i < result.Count; i++ )
{
Persona resultPersona = ConsumirClienteCredit10Test(int.Parse(result[i].NumeroCedula), connection);
MySqlCommand comando = new MySqlCommand();
comando.Connection = mysqConexion;
// comando.Parameters.Clear();
comando.CommandText = "Pago"; //nombre del procedimiento almacenado
comando.CommandType = CommandType.StoredProcedure;
comando.Parameters.Add("@IdCupo", (MySqlDbType)SqlDbType.Int).Value = resultPersona.IdCupo;
comando.Parameters.Add("@Cedula", (MySqlDbType)SqlDbType.Int).Value = resultPersona.Cedula;
comando.Parameters.Add("@ValorPresu", (MySqlDbType)SqlDbType.Decimal).Value = resultPersona.ValorMinimo;
comando.Parameters.Add("@ValorSugerido", (MySqlDbType)SqlDbType.Decimal).Value = resultPersona.ValorProximo;
comando.Parameters.Add("@ValorTotal", (MySqlDbType)SqlDbType.Decimal).Value = resultPersona.ValorTotal;
comando.Parameters.Add("@ValorPagado", (MySqlDbType)SqlDbType.Decimal).Value = result[i].Valor;
comando.Parameters.Add("@CodSucursal", (MySqlDbType)SqlDbType.Int).Value = 998;
var resultadoPersona = comando.ExecuteNonQuery();
}
mysqConexion.Close();
Console.WriteLine("Termino procedimiento almacenado");
}
else
{
Console.WriteLine("No contiene resultados");
}
return true;
}
Los resolvi utilizando await en cmd.ExecuteNonQueryAsync();
try
{
MySqlConnection mysqConexion = new MySqlConnection();
mysqConexion.ConnectionString = connectionMysqlcredi10;
mysqConexion.Open();
MySqlCommand cmd = new MySqlCommand();
cmd.Connection = mysqConexion;
//cmd.CommandText = "InsertarUsuario"; //name stored procedure
cmd.CommandText = "Pago"; //name stored procedure
cmd.CommandType = CommandType.StoredProcedure;
for (int i = 0; i < result.Count; i++)
{
Persona resultClient = InformationClient(int.Parse(result[i].NumeroCedula), connectionMysqlcredi10);
cmd.Parameters.Clear();
cmd.Parameters.AddWithValue("@IdCupo", resultClient.IdCupo);
cmd.Parameters.AddWithValue("@Cedula", resultClient.Cedula);
cmd.Parameters.AddWithValue("@ValorPresu", resultClient.ValorMinimo);
cmd.Parameters.AddWithValue("@ValorSugerido", resultClient.ValorProximo);
cmd.Parameters.AddWithValue("@ValorTotal", resultClient.ValorTotal);
cmd.Parameters.AddWithValue("@ValorPagado", result[i].Valor);
cmd.Parameters.AddWithValue("@CodSucursal", 998);
cmd.Parameters["@IdCupo"].Direction = ParameterDirection.Input;
cmd.Parameters["@Cedula"].Direction = ParameterDirection.Input;
cmd.Parameters["@ValorPresu"].Direction = ParameterDirection.Input;
cmd.Parameters["@ValorSugerido"].Direction = ParameterDirection.Input;
cmd.Parameters["@ValorTotal"].Direction = ParameterDirection.Input;
cmd.Parameters["@ValorPagado"].Direction = ParameterDirection.Input;
cmd.Parameters["@CodSucursal"].Direction = ParameterDirection.Input;
int rowsAffected = await cmd.ExecuteNonQueryAsync();
}
mysqConexion.Close();
}
catch (Exception ex)
{
Console.WriteLine("Error en: " + ex);
throw;
}
Answered by Jhon Alexander Jimenez Morales on January 24, 2021
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP