none
Por que crear Parameters RRS feed

  • Pregunta

  • Hola, tengo una duda..Siempre e visto que recomendais crear parametros, pero me han dicho que escribo mucho codigo por crear los parametros que por que no lo hago con variables.

    Nunca me enseñaron a crear parametros ni me explicaron el por que usarlos, alguien podría decirme?

    por ejemplo:

                Dim query As String = "INSERT INTO gc7 (cliente, nfactura, fecha, descuentos, totalfra, baseimpo3, iva3, ptsiva3) VALUES " & _
                                      "(@cliente , @numfact , @fecha , @descuento , @totalfra , @baseimpo , @iva , @totaliva )"
                cnn.Open()
    
    
                Dim i As Integer = Facturar.DataGridViewFacturar.Rows.Count - 1
                Dim cmd As New SqlCommand(query, cnn)
                cmd.Parameters.AddWithValue("@cliente", CInt(Facturar.TxtCodigo.Text))
                cmd.Parameters.AddWithValue("@numfact", CInt(numerofact))
                cmd.Parameters.AddWithValue("@fecha", DateTime.Now.ToString("yyyy/MM/dd"))
                cmd.Parameters.AddWithValue("@totalfra", Convert.ToDecimal(Facturar.DataGridViewFacturar.Rows(i).Cells("TOTAL Factura").Value))
                cmd.Parameters.AddWithValue("@baseimpo", totpvp)
                cmd.Parameters.AddWithValue("@descuento", CInt(Facturar.DataGridViewFacturar.Rows(i).Cells("Descuento").Value))
                cmd.Parameters.AddWithValue("@iva", CInt(Facturar.DataGridViewFacturar.Rows(i).Cells("IVA").Value))
                cmd.Parameters.AddWithValue("@totaliva", totiva)

    martes, 2 de febrero de 2016 18:34

Respuestas

Todas las respuestas

  • aunque te digan que escribes mas código decirte que tal vez tengan razón. Pero ganas en legibilidad en tu código fuente, evitas ataques de sql injection, evitas errores en consulta por tipos de datos no correctos, el manejo de las fechas es mas sencillo que tener que formatear cadenas...

    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    martes, 2 de febrero de 2016 18:55
  • lee este articulo y comprenderás que es mejor parametrizar

    http://blog.codinghorror.com/give-me-parameterized-sql-or-give-me-death


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    • Marcado como respuesta RamonArevalo martes, 2 de febrero de 2016 19:14
    martes, 2 de febrero de 2016 18:59
  • Hola:

     Eso depende que como es que estabas trabajando anteriormente. Lo que comenta Sergio es muy cierto una de las razones principales es evitar el ataque por injecion SQL eso para mi es lo mas importante.

    How To: Protect From SQL Injection

     La desventaja de concatenar las consultas SQL es los errores tan comunes por Sintaxis mal escritas.

     Si hoy parametrizando las consultas sientes que escribes mucho código, te invito a que pruebes Entity Frameworl ahi veras que no tienes que escribir explicitamente las consultas, porque EF lo hará por ti, ahí si conservas seguridad y reduces la cantidad de lineas escritas.


    Saludos desde Monterrey, Nuevo León, México!!!

    martes, 2 de febrero de 2016 19:06
  • Hola RamonArevalo,

    Además del uso de parámetros - cuyas ventajas y beneficios espero ya te hayan quedado claras - deberías hacer uso de procedimientos almacenados y no escribir código t-sql como una cadena de texto. Desde mi punto de vista tienes las siguientes ventajas:

    1. Reutilización de código.
    2. Utilizas planes de ejecución
    3. El método queda mas limpio con sólo llamadas a objetos de base de datos

    ...
    Dim cmd As New SqlCommand("MiProcedimientoAlmacenado", cnn)
    cmd.CommandType = CommandType.StoredProcedure
    ...


    martes, 2 de febrero de 2016 19:41