Java - problema con ResultSet y .next()

 
Vista:

problema con ResultSet y .next()

Publicado por daniel juarez cruz (2 intervenciones) el 03/12/2009 20:52:14
Hola que tal, soy nuevo en este foro y pues me gustaria que me pudieran hechar la mano ya que llevo un rato y no le encuentro, Estoy trabajando dentro de NetBeans y postgres y mi problema es "ResultSet is closed", he estado leyendo tratando de buscar una solucion pero nada parecido a esto. He leido que puede ser porque necesite otro Statement pero el problema es que uso el mismo resultSet dentro del mismo metodo y sigue mandando el mismo error. El problema es a la hora de que ejecuta el rs.next del while, ahi me marca el error. Ojala me puedan ayudar que ando desesperado. gracias, este es el metodo:

public void createTable(ResultSet rs, String tableName, String[] fields)throws SQLException{
resMD = rs.getMetaData(); // Se obtienen los meta datos de el ResultSet.
int[] indexC = new int[fields.length]; //indexC nos guarda el numero de columna que nos interesa dentro del ResultSet
int count = resMD.getColumnCount(); //Obtenemos el numero de columnas que tiene nuestra consulta.
String parameters; // Esta cadena nos sirve para guardar la información de cada renglon
String[] row = new String[rs.getRow()]; //Este arreglo nos sirve para ir almacenando los renglones
int rowCount = 0; //Este contador nos sirve para indicar el indice de nuestra cadena de renglones
//Creamos la nueva tabla.
for(int j=0;j<fields.length;j++){
for(int i=1;i<=count;i++){
if(j==0){
if(resMD.getColumnName(i).equals(fields[j])){
if(resMD.getColumnTypeName(i).equals("varchar")){
this.update("CREATE TABLE "+tableName+" ("+fields[j]+" text);");
indexC[j]=i;
continue;
}
else{
this.update("CREATE TABLE "+tableName+" ("+fields[j]+" "+resMD.getColumnTypeName(i)+");");
indexC[j]=i;
continue;
}
}
}
else{
if(resMD.getColumnName(i).equals(fields[j])){
if(resMD.getColumnTypeName(i).equals("varchar")){
this.update("ALTER TABLE "+tableName+" ADD COLUMN "+fields[j]+" text;");
indexC[j]=i;
continue;
}
else{
this.update("ALTER TABLE "+tableName+" ADD COLUMN "+fields[j]+" "+resMD.getColumnTypeName(i)+";");
indexC[j]=i;
}
}
}
}
}

System.out.println("se creo la tabla");
//Obtenemos los renglones
while(rs.next()){
System.out.println("iteracion "+rowCount);
parameters = null;
for(int k=0;k<fields.length;k++){
if(k==0){
if(resMD.getColumnTypeName(indexC[k]).equals("text")){
parameters.concat("'"+rs.getString(fields[k])+"'");
continue;
}
parameters.concat(rs.getString(fields[k]));
continue;
}
if(resMD.getColumnTypeName(indexC[k]).equals("text")){
parameters.concat(", '"+rs.getString(fields[k])+"'");
continue;
}
parameters.concat(", "+rs.getString(fields[k]));
}
//Los almacenamos en nuestro arreglo.
row[rowCount] = parameters;
rowCount++;
System.out.println(parameters);
}
//Llenamos la nueva tabla recorriendo nuestro arreglo de renglones.
for(int g=0;g<row.length;g++){
this.update("INSERT INTO "+tableName+" Values("+row[g]+");");
}
}
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:problema con ResultSet y .next()

Publicado por chasal99 (42 intervenciones) el 04/12/2009 00:09:10
hola daniel primero quita el throws SQLException y pon todo el codigo en un try catch
public void createTable(ResultSet rs, String tableName, String[] fields){
try{
//tu codigo
}catch (SQLException e) {
e.printStackTrace();
}
}

te va a arrojar una mensaje de la exeption postealo para ver que pasa
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:problema con ResultSet y .next()

Publicado por daniel juarez cruz (2 intervenciones) el 04/12/2009 21:20:45
Muchas gracias por la atencion a mi problema.

Ese throws lo puse para cachar las excepciones y lo cacho en el main a la hora de ejecutar ese metodo, no se si cambie en algo si lo pongo dentro del metodo, segun yo no, pero tal ves si. ademas gracias al try catch que uso en el main, es que me devuelve la excepcion de que el resultset esta cerrado.
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