Ver Mensaje Individual
  #7 (permalink)  
Antiguo 14/08/2009, 01:12
MiLLeN
 
Fecha de Ingreso: diciembre-2007
Mensajes: 194
Antigüedad: 17 años
Puntos: 5
Respuesta: ResultSet y mysql

Cita:
Iniciado por Erume Ver Mensaje
Este es el código completo de la consulta a la base de datos.

¿Sabeis si los drivers de mysql soportan ese "scrollable?.

Un saludo.

Código:
             Connection connection;
             Class.forName("com.mysql.jdbc.Driver"); //Construyendo el driver con el conector mysql
             String url = "jdbc:mysql://localhost/Miproyecto"; //La dirección de la base de datos
             String usr = "miusuario"; //El usuario de la base de datos
             String pass = "micontraseña"; //La contraseña de la base de datos
             String var1 = request.getParameter("var1");
             String sql = "Select * From MiTabla Where var1='" + var1 +
                  "';";
               connection = DriverManager.getConnection(url, usr, pass);
              Statement statement = connection.createStatement();
              ResultSet res;
              //Ejecutamos la consulta sql, generada arriba
              res = statement.executeQuery(sql);
              
              res.last();
              int length = res.getRow();
              res.first();

              while(res.next()){
                      //Aquí recorro la consulta
              }
Para que el resulset sea "scrollable" debes pasarle los siguientes parametros. (Sacado de la propia API)

Código:
Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
Bien, varias cosas, primero, con la conexion lo mejor que deberias hacer es declarar una clase con un singleton para el objeto conexion. Y sin matarte mucho la cabeza, ni usar EJB (http://www.dcc.uchile.cl/~jbarrios/J2EE/node53.html aqui tienes un buen tuto sobre ellos por si te animas), en el constructor inicias esa conexion y metes la conexion en la sesion. Y de ahi la reutilizas.

Segundo, tal y como creas la consulta de la base de datos tienes un agujero de seguridad impresionante, hazlo con un PrepareStatement:

Código:
String sql = "Select * From MiTabla Where var1= ?";

PreparedStatement statement = connection.prepareStatement(sql);
ps.setString(1, var1);

res = ps.executeQuery();
Un saludo.
__________________
Aprender J2EE en www.programacionj2ee.com.
Mi framework PHP D Framework.

Última edición por MiLLeN; 14/08/2009 a las 01:17