Título: Diferencia entre manera de programar Publicado por: novalida en 3 Julio 2012, 18:31 pm Hola!!!
He estado viendo varios tutoriales para trabajar con bases de datos en .NET y he encontrado dos maneras de escribir código que no sé muy bien por qué una dicen que es mejor que la otra. Aquí os presentos ambas versiones con la parte de código que corresponde a lo que no entiendo en Visual Basic .NET. Es sólo el código con el que se conseguiría lo mismo, dado que únicamente faltaría en cada caso la ejecución contra la base de datos. La primera versión: Código: Dim comando As String La segunda versión: Código: Dim comando As String Entiendo cada una de las líneas de ambos códigos, pero no entiendo por qué dicen que es mejor la segunda versión que la primera, si la primera implica menos código. Si alguien me pudiera echar un poquito de luz y aclararme el tema se lo agradecería :) Gracias y un saludo!!!! Título: Re: Diferencia entre manera de programar Publicado por: cristiantorres en 3 Julio 2012, 19:00 pm Pues siempre es mejor usar parámetros, ya que en cierta medida es mas seguro usar parámetros y no directamente los valores
Título: Re: Diferencia entre manera de programar Publicado por: Novlucker en 3 Julio 2012, 19:02 pm Seguridad.
En el primer caso se podría concatenar cualquier consulta (SQL injection) En el segundo caso estás utilizando una consulta parametrizada, con lo cual te aseguras que el valor que esperas sea el correcto. Saludos Título: Re: Diferencia entre manera de programar Publicado por: novalida en 3 Julio 2012, 19:22 pm Es cierto!!!
No había pensado en ello pero ahora me surje otra duda. Si la aplicación que se desarrolla no es web si no de escritorio, ¿también se debería hacer de la segunda manera? Título: Re: Diferencia entre manera de programar Publicado por: Novlucker en 3 Julio 2012, 19:30 pm Si, es indiferente.
Saludos Título: Re: Diferencia entre manera de programar Publicado por: HdM en 3 Julio 2012, 19:31 pm Buenas.
Las app de escritorio también son susceptibles a SQLi. De todos modos si se utiliza la 1ª opción que has planteado y lo que introduce el usuario se filtra/procesa y se "limpia" antes de pasarlo a la query, no debería haber problema. Saludos. Título: Re: Diferencia entre manera de programar Publicado por: novalida en 3 Julio 2012, 19:48 pm Ahora ya tengo algo más de idea sobre el trabajo de aplicaciones contra bases de datos.
Muchas gracias!!! Título: Re: Diferencia entre manera de programar Publicado por: MaLkAvIaN_NeT en 3 Julio 2012, 22:55 pm Las dos opciones que pones trabajan en una sola capa
Código: comando = "SELECT campo FROM tabla WHERE fila = " & valor Código: comando = "SELECT campo FROM tabla WHERE fila = @param" es decir son sentencias que se vuelven a validar en el motor de base de datos buscando que no haya problemas de sintaxis en las consultas que se mandan como texto plano, lo que no pasaría si trabajaras a dos capas, es decir usando los store procedures los que ya no tienen que validarse si no simplemente se ejecutan porque son estructuras de código ya definidas en la base de datos. en el siguiente ejemplo le mandas parámetros a un store procedure que previamente tienes que tener creado en tu base de datos Código: Public Function mantenimiento(ByVal cnn As SqlClient.SqlConnection, ByVal tipo As tipo_mantenimiento) As Integer |