Java - Leer de 3 ResultSet a la vez

 
Vista:

Leer de 3 ResultSet a la vez

Publicado por Jenny (4 intervenciones) el 09/06/2005 14:09:37
Por favor, necesito ayuda para mi programa. estoy intentando imprimir en un archivo pdf un informe sobre el stock de un almacen, pero tengo 3 tablas de productos y no estan relacionadas asi que he creado 3 resultset con su respectivo statement y lo he intentado pero no me funciona. alguien me puede ayudar???

el codigo es el siguiente...

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();
Connection cn= DriverManager.getConnection(urlDb);
Statement select =cn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
ResultSet rs= select.executeQuery ("Select LOTE,NOMBRE,AÑADA,STOCK FROM INFORMACION_VINOS order by nombre");

Statement select2 =cn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
ResultSet rs2=select2.executeQuery("select LOTE,NOMBRE,AÑADA,STOCK FROM INFORMACION_ISILLA order by nombre");

Statement select3 =cn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
ResultSet rs3=select3.executeQuery("select LOTE,NOMBRE,AÑADA,STOCK FROM INFORMACION_SORIA order by nombre");

PdfPTable lineas = new PdfPTable(3);
float tamaño[]={220,140,140};
lineas.setTotalWidth(tamaño);
lineas.getDefaultCell().setBorder(com.lowagie.text.Rectangle.TOP);
lineas.getDefaultCell().setBorderColor(new Color(234,200,173));

while (rs.next() || rs2.next() || rs3.next() ){
//cojo los datos del primer resultset.....
String lote=rs.getString("lote").toUpperCase();
String nombre=rs.getString("NOMBRE").toUpperCase();
String añada=rs.getString("AÑADA").toUpperCase();
int stock=rs.getInt("STOCK");
String espacio=" ";
String espacio2=".............";
String unida=" Unidades";
Phrase cc=new Phrase(12,new Chunk(lote,FontFactory.getFont(FontFactory.COURIER ,12,com.lowagie.text.Font.NORMAL ))) ;
Phrase c1=new Phrase(12,new Chunk(nombre+" "+añada,FontFactory.getFont(FontFactory.COURIER ,12,com.lowagie.text.Font.NORMAL ))) ;
Phrase c5=new Phrase(12,new Chunk(stock+""+unida,FontFactory.getFont(FontFactory.COURIER ,12,com.lowagie.text.Font.NORMAL ))) ;
Phrase c=new Phrase(5,new Chunk(" ",FontFactory.getFont(FontFactory.COURIER ,5,com.lowagie.text.Font.NORMAL))) ;
lineas.addCell(cc);
lineas.addCell(c1);
lineas.addCell(c5);
lineas.addCell(c);
plinea=plinea+1;
//cojo los datos del 2 resultset.....
lote=rs2.getString("lote").toUpperCase();
nombre=rs2.getString("nombre").toUpperCase();
añada=rs2.getString("añada").toUpperCase();
stock=rs2.getInt("stock");
Phrase cc0=new Phrase(12,new Chunk(lote,FontFactory.getFont(FontFactory.COURIER ,12,com.lowagie.text.Font.NORMAL ))) ;
Phrase cc1=new Phrase(12,new Chunk(nombre+" "+añada,FontFactory.getFont(FontFactory.COURIER ,12,com.lowagie.text.Font.NORMAL ))) ;
Phrase cc2=new Phrase(12,new Chunk(stock+""+unida,FontFactory.getFont(FontFactory.COURIER ,12,com.lowagie.text.Font.NORMAL ))) ;
Phrase cc3=new Phrase(5,new Chunk(" ",FontFactory.getFont(FontFactory.COURIER ,5,com.lowagie.text.Font.NORMAL))) ;
lineas.addCell(cc0);
lineas.addCell(cc1);
lineas.addCell(cc2);
lineas.addCell(cc3);
plinea=plinea+1;
//cojo los datos del 3 resultset....
lote=rs3.getString("lote").toUpperCase();
nombre=rs3.getString("nombre").toUpperCase();
añada=rs3.getString("añada").toUpperCase();
stock=rs3.getInt("stock");
Phrase ccc0=new Phrase(12,new Chunk(lote,FontFactory.getFont(FontFactory.COURIER ,12,com.lowagie.text.Font.NORMAL ))) ;
Phrase ccc1=new Phrase(12,new Chunk(nombre+" "+añada,FontFactory.getFont(FontFactory.COURIER ,12,com.lowagie.text.Font.NORMAL ))) ;
Phrase ccc2=new Phrase(12,new Chunk(stock+""+unida,FontFactory.getFont(FontFactory.COURIER ,12,com.lowagie.text.Font.NORMAL ))) ;
Phrase ccc3=new Phrase(5,new Chunk(" ",FontFactory.getFont(FontFactory.COURIER ,5,com.lowagie.text.Font.NORMAL))) ;
lineas.addCell(ccc0);
lineas.addCell(ccc1);
lineas.addCell(ccc2);
lineas.addCell(ccc3);
plinea=plinea+1;

if(plinea>23){
lineas.writeSelectedRows(0,-1,170,880,directo.getDirectContent() ) ;
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

RE:Leer de 3 ResultSet a la vez

Publicado por Daniel (156 intervenciones) el 09/06/2005 15:20:36
Hola hacer 3 rs, no es lo mas productivo pero si lo quieres hacer asi tb necesitas crear 3 objetos conection, ejemplo
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch (ClassNotFoundException m)
{
System.out.println("error al cargar controladores");
}

try
{
cn=DriverManager.getConnection("jdbc:odbc:dns","usr","clave");
cn1=DriverManager.getConnection("jdbc:odbc:dns","usr","clave");
cn2=DriverManager.getConnection("jdbc:odbc:dns","usr","clave");
st=cn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY); st1=cn1.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
st2=cn2.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
rs=st.executeQuery("select * from marcas");
rs1=st1.executeQuery("select * from marcas");
rs2=st2.executeQuery("select * from marcas");

}
catch(SQLException x)
{
}

y asi por cada objeto q necesites, saludos y espro t funcione
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

RE:Muchas gracias...

Publicado por Jenny (4 intervenciones) el 10/06/2005 13:14:06
Hola Daniel muchas gracias por tu ayuda. ahora mismo intentaré hacerlo como me explicas.
saludos
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