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]+");");
}
}
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


0