Consulta en Base de Datos
Saludos a todos los de Javamexico!
Hoy traigo una duda con una consulta a bd..
Esta seria la forma correcta de consultar para una aplicación web??
Alguien me aconseja?
-Ques esta mal?
-que esta bien?
- Inicie sesión o regístrese para enviar comentarios
No, esa es la peor
Esa es la peor forma de consultar para cualquier tipo de aplicación. Utiliza PreparedStatements con parámetros, no concatenes SQL especialmente la parte de parámetros de búsqueda, porque vuelves a tu aplicación vulnerable a ataques de inyección de SQL.
Ejemplo D:
me darías un ejemplo?
Re: ejemplo
Este sitio me ha ayudado mucho: http://www.google.com. Por si acaso: Cómo hacer búsquedas en Google.
P.D.: Perdón por el exabrupto. No quería perder la oportunidad de decir algo así. ¡Je!
String sql = "SELECT
Usa prepared statements:
Donde a.a, a.b, a.c son los campos de tu tabla.
Si no lo haces así y el valor de where viene de algún valor que el usuario puede capturar te pueden hacer inyección de SQL.
para aplicacion cliente servidor
entonces en una aplicacion ya sea web o de escritorio (cliente servidor) se debe ocupar procediminetos almacenados, solo mandar los parametros deseados...
(clave, ide o fecha.)
eh
Nadie aquí ha mencionado stored procedures, solamente queries parametrizados.
Re: para aplicacion cliente servidor
¿Es una pregunta? … O, ¿es una afirmación?
P.D. ¿Cómo va todo? Espero que por fin ya te hayas liberado de la empresa esa.
@pechsck No, los nombres
No, los nombres pueden parecerse, pero unos son "prepared statements" ( "sentencias preparadas" ) y los otros son "stored procedures" ( procedimientos almacenados).
Con las sentencias preparadas ( prepared statements ) dejas un signo de interrogación para tus parametros y el driver lo sustituye con el valor de una forma segura.
Así, si por ejemplo si tienes una fecha, en vez de tener que lidiar con el formato correcto en un string concatenado como este:
Puedes dejar que el driver lo escriba en el formato correcto por tí. Más aún y todavía más improtante te evita que se inyecte una sentencia SQL peligrosa.
Usar prepared statements no solo es más fácil y seguro sino que además es más rápido pues el motor de base de datos puede guardar la sentencia y ejecutarla más rápidamente en vez de tener que parsearla de nuevo.
Este sería el equivalente:
Hola!
Holaa!! Gracias por sus respuestas.! A ver les contare un poco... Soy realmente "nuevo"en el mundo java... he estado investigando, leyendo doc y todo lo relacionado pero hay muchas cosas que no entiendo aun.
De igual forma agradezco sus respuestas y aunque algunas no las entienda busco información al instante para comprender mejor.
Con respecto al tema: Quiero un único método para hacer las consultas, pero el que tengo es el peor =(
Así que haré otra pregunta: Tomando el ejemplo que me señala OscarRyz;
En mi método al enviar el query no se cuales serán los parámetros exactamente, osea no se el tipo de variable para hacer el
.
PD: (Jpaul ) Se como hacer búsquedas en google... Pero igual gracias :3
Re: hola
No fue nada. Es que no estaba seguro si sabías o no. LOL
@Artixdavid Lee el la
@Artixdavid Lee el la documentación para que veas que posibilidades tienes:
Por ejemplo el prepared statement tiene un método
al que le puedes pasar cualquier tipo, pero tienes que ver si es lo que necesitas.
Otra opción es revisar el tipo de dato del parámetro y poner un swtich
Y la otra opción ( la mejor ) es que utilices alguna biblioteca o producto que te ayuden con esto, por ejemplo Hibernate es el estándar en la industria, aunque la curva de aprendizaje no es precisamente plana, pero definitivamente es mucho mejor que crear tu propio framework de base de datos
ibatis
iBatis es otra opción para que no andes reinventando el hilo negro