Java - Problema con ResultSet

 
Vista:

Problema con ResultSet

Publicado por Geronimo (23 intervenciones) el 19/05/2005 14:50:42
Tengo un problema con el siguiente codigo:

public HashMap selectAll()
String sql="SELECT * FROM tabla";
HashMap coleccion=new HashMap();
ResultSet rs,rs2;
Objeto obj;
String atr1,atr2,atr3;
try{
rs=conexion.select(sql);
while(rs.next()){
atr1=rs.getString("columna1");
atr2=rs.getString("columna2");
atr3=rs.getString("columna3");
objeto=new Objeto(atr1,atr2,atr3);
coleccion.put(objeto.getAtr1(),objeto);
sql="SELECT * FROM otra tabla WHERE campo='"+objeto.getAtr1()+"';";
rs2=conexion.select(sql);
while(rs2.next()){
....
....
otras acciones...
}
}
catch(SQLException sqle){
return null;
}
return coleccion;
}

El tema es que cuando vuelve a la siguiente pasada del primer while el rs.next() me tira un error y sale de la funcion. Esto hace que no pueda anidar selecciones y tengo casos en los que necesito crear objetos que contienen a otros (por eso los while anidados)
Cualquier sugerencia sera bienvenida. Saludos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 755
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

RE:Problema con ResultSet

Publicado por Yamil Bracho (2315 intervenciones) el 19/05/2005 15:02:23
Creo qeu dependeinedo del driver solo se peermite abrir un resultset a la vez.. Que BD estas usando ?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 755
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

RE:Problema con ResultSet

Publicado por Yamil Bracho (2315 intervenciones) el 19/05/2005 15:13:40
Me tome la libertad de modificar en algo el codigo que publicaste quitando los resultsets anidados:

public HashMap selectAll()
String sql="SELECT * FROM tabla";
HashMap coleccion=new HashMap();
ResultSet rs,rs2;
Objeto obj;
String atr1,atr2,atr3;
try{
rs = conexion.select(sql);
while(rs.next()){
atr1=rs.getString("columna1");
atr2=rs.getString("columna2");
atr3=rs.getString("columna3");
objeto=new Objeto(atr1,atr2,atr3);
coleccion.put(objeto.getAtr1(),objeto);
}
rs.close();

for (Iterator it=map.entrySet().iterator(); it.hasNext(); ) {
Map.Entry entry = (Map.Entry)it.next();
String key = (String) entry.getKey();
Objecto objeto = (Objeto)entry.getValue();

sql="SELECT * FROM otra tabla WHERE campo='"+objeto.getAtr1()+"';";
rs2=conexion.select(sql);
while(rs2.next()){
}
}

....
....
otras acciones...
}
}
catch(SQLException sqle){
return null;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar