Ver Mensaje Individual
  #9 (permalink)  
Antiguo 20/09/2006, 10:40
DavidOrtiz
 
Fecha de Ingreso: agosto-2006
Mensajes: 30
Antigüedad: 17 años, 8 meses
Puntos: 0
"Quiero decir, en cuanto entras en un rs.next() ya sabes que tiene resultados, luego no devolveras null. Si por el contrario no entras, devuelves null."

Bueno trataré de mostrar código:
Código PHP:
//Este método recibe la cadena sql a ejecutar, con una Connection y Statement declarados por supuesto y que no expongo aquí por cuestiones de código más claro...

public Object[] ConsultaObject(String SQL,Class Clase) {
   
Object[] Resultado;
   
Rs St.executeQuery(SQL);
   if (
Rs.next()) { //Aquí necesito validar si hay registros.
      
Resultado this.ObtenerObjetos(Rs,Clase); //llama a otro método
   
}
   else {
      
Resultado null;
   }
   return 
Resultado;   
}

//Este otro método recibe por párametro el ResulSet creado en el anterior y se encarga de crear el Object[] según los campos del parámetro Class y de la metadata del ResultSet (que no expongo por el motivo que ya expliqué anteriormente)

private Object[] ObtenerObjetos(ResultSet Rs,Class Clase) {
   
Vector Listado = new Vector();
   while(
Rs.next()) { //Aquí se posiciona en la fila 2
      
Object Objeto Clase.newInstance();
      
//{
      //Código de llenado de Objeto con los datos de la fila
      //}
    
Listado.add(Objeto);
   }

El detalle que me sucede es que si en el metodo ConsultaObject defino Rs.next(), cuando estoy en el método ObtenerObjetos se pierde la primera fila y si el RS solo tiene una fila, entonces lanza un error, si el RS tiene 2 ó más filas llena el array de objetos, pero sin la primera fila (por eso necesito posicionarme en la primera fila).
El punto es que en algún lado necesito validar si hay filas y comenzar a recorrerlo desde la fila 1. Si hago esto en el método ObtenerObjetos, cuando entra en el while ya no es la primera fila, pues en el famoso ResulSet solo puedo utilizar .next(). Si ejecuto la consulta 2 veces no hay problema, pero es lo que quería evitar.

Saludos.