none
¿Cómo usar el mismo Command para una query diferente? RRS feed

  • Pregunta

  • Hola, estoy trabada con lo siguiente...

    Estoy enviando la siguiente Query con resultados excelentes:

        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Procesar.Click
            Dim numero As Integer
            Try
                Dim conexion As New MySqlConnectionStringBuilder()
                conexion.Server = "127.0.0.1"
                conexion.UserID = "admin"
                conexion.Password = "pass"
                conexion.Database = "db"
                Using con As New MySqlConnection(conexion.ToString)
                    con.Open()
                    Dim sql As String
                    sql = "SELECT * FROM miTabla WHERE columna = '" + numero + "' ORDER BY fecha"
                    Dim comandoSQL As New MySqlCommand(sql, con)
                    Dim dataReader As MySqlDataReader = comandoSQL.ExecuteReader()
                    While dataReader.Read()
                        MsgBox(dataReader("columna").ToInteger())
                    End While
                    End If
              End Using
       End Sub
    

    Sin embargo, quieri hacer algo idéntico pero con una LISTA de "numero", o sea, la variable 'numero' va a cambiar con un FOR que lee TODOS los 'n' valores de una Lista y necesito hacer la query PRIMERO para el 'numero' = 700, Luego la misma query para 'numero' = 765, luego 'numero' = 723 y así hasta que la lista esté recorrida.

    Como ven, los números no tienen patrón, y pueden variar mucho, por lo que SI o SI tengo que tomarlos de la lista, y lo único que he logrado es que funcione con el primer número, pero no hayo la forma en que un FOR (para recorrer la lista) me lea la lista y cambie la variable 'sql' para mandar un nuevo COMANDO y leer esa segunda, y tercera y cuarta query.

    Espero haber sido un poco clara :-?

    Aguardo comentarios y gracias por adelantado!

    lunes, 16 de marzo de 2020 3:12

Todas las respuestas

  • Sí, no solo se puede usar el mismo command, sino que es la forma recomendada de hacerlo.

    PERO para eso primero tienes que olvidarte de la pésima costumbre de concatenar datos en la consulta. No es aconsejable hacer eso nunca, ni siquiera aunque no tengas un bucle y solo vayas a usar el command una sola vez. En su lugar, se debe paramerizar la consulta.

    Una vez tengas hecho eso (y acostúmbrate a hacerlo siempre, no solo en el caso de que quieras reutilizar el command), entonces es muy sencillo: Simplemente declaras el command con su parámetro antes de entrar en el bucle, y luego dentro del bucle simplemente cambias el .Value del parámetro y ejecutas el command.

    Se han vertido ríos de tinta acerca del tema de parametrizar las consultas y por qué deben hacerse de esta manera y no concatenando, así que me imagino que no tendrás dificultad en encontrar un ejemplo de cómo se hace. No obstante, si no lo encuentras, pregunta por aquí y te buscaremos algún enlace.

    • Propuesto como respuesta Sergio Parra lunes, 16 de marzo de 2020 8:16
    lunes, 16 de marzo de 2020 7:53