C sharp - Retornar valor desde clase a los formularios

 
Vista:
sin imagen de perfil
Val: 23
Ha disminuido 1 puesto en C sharp (en relación al último mes)
Gráfica de C sharp

Retornar valor desde clase a los formularios

Publicado por Mendizalea (14 intervenciones) el 11/05/2018 11:28:55
Buenos dias,

Tengo esto dentro de una clase, al cual llamo desde mis formularios. Lo primero de todo llamo a un procedimiento almacenado de MySQL donde hace una select para ver si el participante seleccionado tiene algún tiempo asignado para la prueba y vuelta seleccionado y si no lo tiene lo inserta. Una vez insertado ejecuta otro procedimiento para almacenar el tiempo de vuelto en milisegundos. Todo esto funciona correctamente, lo unico, necesito que cuando el procedimiento me devuelve upgradeable false (=0) enviar al formulario desde la clase que no se a podido actualizar. Como lo podria hacer?

Muchas gracias

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
public void insertar(List<string> valores)
{
    using (MySqlCommand cmd = new MySqlCommand("GetTimeIfUpgradeable", conex))
    {
        try
        {
            conex.Open();
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.AddWithValue("@p_fldName", valores[4]);
            cmd.Parameters["@p_fldName"].Direction = ParameterDirection.Input;
            cmd.Parameters.AddWithValue("@p_eventID", valores[0]);
            cmd.Parameters["@p_eventID"].Direction = ParameterDirection.Input;
            cmd.Parameters.AddWithValue("@p_stageID", valores[1]);
            cmd.Parameters["@p_stageID"].Direction = ParameterDirection.Input;
            cmd.Parameters.AddWithValue("@p_competitorID", valores[2]);
            cmd.Parameters["@p_competitorID"].Direction = ParameterDirection.Input;
            cmd.Parameters.AddWithValue("@p_upgradeable", MySqlDbType.Int32);
            cmd.Parameters["@p_upgradeable"].Direction = ParameterDirection.Output;
            cmd.ExecuteNonQuery();
            int upgradeable = Convert.ToInt32(cmd.Parameters["@p_upgradeable"].Value);
            if (upgradeable == 1)
            {
                string sql = "INSERT INTO Tiempos (IDCarrera, IDVuelta, IDParticipante, " + valores[4] + ")" +
                    "VALUES ('" + valores[0] + "', '" + valores[1] + "', '" + valores[2] + "', '" + valores[3] + "')" +
                    "ON DUPLICATE KEY UPDATE " + valores[4] + " = IF(NULLIF(" + valores[4] + ", ' ') IS NULL, '" + valores[3] + "', " + valores[4] + ");";
                MySqlCommand sql_ins = new MySqlCommand(sql, conex);
                sql_ins.ExecuteNonQuery();
 
                using (MySqlCommand cmdupd = new MySqlCommand("UpdateTimeEventStageCompetitor", conex))
                {
                    try
                    {
                        cmdupd.CommandType = CommandType.StoredProcedure;
                        cmdupd.Parameters.AddWithValue("@p_eventID", valores[0]);
                        cmdupd.Parameters["@p_eventID"].Direction = ParameterDirection.Input;
                        cmdupd.Parameters.AddWithValue("@p_stageID", valores[1]);
                        cmdupd.Parameters["@p_stageID"].Direction = ParameterDirection.Input;
                        cmdupd.Parameters.AddWithValue("@p_competitorID", valores[2]);
                        cmdupd.Parameters["@p_competitorID"].Direction = ParameterDirection.Input;
                        cmdupd.ExecuteNonQuery();
                    }
                    catch (MySqlException ex)
                    {
                        MessageBox.Show("Error " + ex.Number + " has occurred: " + ex.Message);
                    }
                }
            }
            else
            {
                MessageBox.Show("El dorsal seleccionado ya tiene un tiempo asignado anteriormente");
            }
        }
        catch (MySqlException ex)
        {
            MessageBox.Show("Error " + ex.Number + " has occurred: " + ex.Message);
        }
        conex.Close();
    }
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 373
Plata
Ha aumentado su posición en 2 puestos en C sharp (en relación al último mes)
Gráfica de C sharp

Retornar valor desde clase a los formularios

Publicado por Agustin (171 intervenciones) el 11/05/2018 16:48:19
En lugar de void usa bool.

Y en lugar de todo ese desastre de concatenacion de strings usa un ORM como Dios manda, por favor, que no estamos en 1999.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 23
Ha disminuido 1 puesto en C sharp (en relación al último mes)
Gráfica de C sharp

Retornar valor desde clase a los formularios

Publicado por Mendizalea (14 intervenciones) el 17/05/2018 18:43:03
Muchas gracias, solucionado utilizando bool.

Sobre las consultas tienes toda la razon, deberia de utilizar un ORM, pero no conozco ninguno para poder utlizarlo. En Laravel he utlizado Eloquent, cual me recomandais para C#?

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Wilfredo Patricio Castillo
Val: 707
Oro
Ha mantenido su posición en C sharp (en relación al último mes)
Gráfica de C sharp

Retornar valor desde clase a los formularios

Publicado por Wilfredo Patricio Castillo (416 intervenciones) el 18/05/2018 20:06:02
Entity Framework, te va bien con C#.

Pero eso es de acuerdo al proyecto, no existe ningún dios que te mande a usar un ORM.

Saludos cordiales,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 373
Plata
Ha aumentado su posición en 2 puestos en C sharp (en relación al último mes)
Gráfica de C sharp

Retornar valor desde clase a los formularios

Publicado por Agustin (171 intervenciones) el 18/05/2018 20:32:34
NHibernate te pasa por arriba a vos y a todos tus rolingas.

Y no, claro, quien dice que es necesario un ORM, mejor hacer el desastre de concatenación de strings que vemos arriba que despues dura 2 minutos antes de tener un ataque de inyección de SQL.

Ni hablemos de la mantenibilidad y escalabilidad del código.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Wilfredo Patricio Castillo
Val: 707
Oro
Ha mantenido su posición en C sharp (en relación al último mes)
Gráfica de C sharp

Retornar valor desde clase a los formularios

Publicado por Wilfredo Patricio Castillo (416 intervenciones) el 18/05/2018 23:30:50
Si, se que hay muchos que trabajan y se pasan la vida concatenando strings, pero acaso crees que todo esto empezó con ORMs?, y que no se puede vivir sin ellos?.

La mayoría de ORMs, nacieron ayer y acaso antes de eso nunca se tuvo que trabajar?.

Pero no voy a entrar en polémicas, cada quien con lo suyo, pero como dije anteriormente, no todo es ORM.

Saludos cordiales,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar