Subconsultas en jsp

Tengo una preguntota que no se como resolver T_T
Esta es la consulta que hago:
select empresa,t_convenio.codconv,mes,recibo,cuota,observacion from t_convenio,t_pagos,t_comite where anio='vigente' and t_convenio.codconv=t_pagos.codconv and t_convenio.codemp=t_comite.codemp and t_convenio.codconv not in (SELECT distinct codconv FROM t_pagos where mes between "2009-01-01" and "2009-03-20")order by empresa ;
Esta consulta funciona bien en el mysql.
Ahora el problema es en el jsp parece que no me hace caso al filtro que hago e el segundo select. Es decir :
Statement aY = conexion.createStatement();
ResultSet cY = aY.executeQuery("select empresa,t_convenio.codconv, mes,recibo,cuota, observacion from t_convenio,t_pagos,t_comite where ano='vigente' and t_convenio.codconv=t_pagos.codconv and t_convenio.codemp=t_comite.codemp and t_convenio.codconv not in (SELECT distinct codconv FROM t_pagos where mes between '"+f1x+"' and '"+f2x+"')order by empresa");
F1x y f2x son variable es que obtengo por un post get, como ves en el código en la web me lista la tabla llena pero no hace caso al filtro que hago en el select que esta en negrita.
¿Mi pregunta es que estoy haciendo mal? ¿O es que en jsp no se pueden hacer subconsultas?
De antemano gracias por responder, eres la única persona que creo puede ayudarme ^^.

1 Respuesta

Respuesta
1
Primero no te recomiendo que conectes a la base de datos desde un jsp, porque esto es muy inseguro, al hacer esto estas dejando el usuario y la clave de tu base de datos para que cualquiera pueda verla.
Segundo la consulta te recomiendo que lo hagas con un PreparedStatement, esto porque es más eficiente y más fácil de usar de la siguiente forma:
Primero no te recomiendo que conectes a la base de datos desde un jsp, porque esto es muy inseguro, al hacer esto estas dejando el usuario y la clave de tu base de datos para que cualquiera pueda verla, te recomiendo usar un servlet que llame a otra clase donde se tenga la conexión y la consulta
Segundo la consulta te recomiendo que lo hagas con un PreparedStatement, esto porque es más eficiente y más fácil de usar de la siguiente forma:
String sql = "select empresa,t_convenio.codconv, mes,recibo,cuota, observacion from t_convenio,t_pagos,t_comite where ano='vigente' and t_convenio.codconv=t_pagos.codconv and t_convenio.codemp=t_comite.codemp and t_convenio.codconv not in (SELECT distinct codconv FROM t_pagos where mes between ? and ? )order by empresa";
PreparedStatement aY = conexion.prepareStatement(sql);
AY. SetTimestamp(1, f1x); //timestamp elementos de tipo fechas para sql
aY.setTimestamp(2,f2x);
ResultSet cY = aY.executeQuery();
Aqui solo te queda saber como parsear la fecha a un TimeStamp
Je je gracias por responder ^^, um tomare en cuenta sobre lo que me decís de la seguridad, aun cuando hago en el navegador ver código fuente no me sale los datos de la BD, aun así tienes razón por lo de seguridad . um voy a probar el prepared statament aver que tal me va,
gracias por tu tiempo^^.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas