Java - problema con resultset

   
Vista:

problema con resultset

Publicado por gzapata (2 intervenciones) el 28/09/2009 17:03:37
Hola tengo el siguiente esquema:
strSQL = "SELECT AntAA_ajustada, Edad, count(1) as CASOS " +
" FROM VPOT_RESULT_SEP2009 " +
" Where Sexo = 'M' " +
" GROUP BY AntAA_ajustada, Edad";
casosM = generarMatriz(dc,strSQL,c.NOCALCULAPROMEDIO);

y la funcion es esta:

public Object generarMatriz(DataBaseConnections dc,String strSQL,int Prom){
int[][] casos = new int [c.ANTIGUEDADMAXIMA-c.ANTIGUEDADMINIMA+1][c.EDADMAXIMA-c.EDADMINIMA+1];
double[][] salProm = new double [c.ANTIGUEDADMAXIMA-c.ANTIGUEDADMINIMA+1][c.EDADMAXIMA-c.EDADMINIMA+1];
ResultSet rs = null;
rs = dc.ExecSql(strSQL);
int lin = 0;
int col = 0;
long cuenta = 0;
try {
rs.last();
cuenta = rs.getRow();
System.out.println("cuenta = "+ cuenta);
cuenta = 0;
rs.beforeFirst();
while(rs.next()){
// for (long i=0;i<cuenta;i++){
lin = rs.getInt("AntAA_ajustada") - c.ANTIGUEDADMINIMA + 1;
col = rs.getInt("Edad")- c.EDADMINIMA + 1;
casos[0][col] =rs.getInt("Edad");
casos[lin][0] = rs.getInt("AntAA_ajustada");
cuenta += 1;
if (Prom==0){
casos[lin][col]= rs.getInt(3);
}else{
salProm[lin][col]=
(Double) rs.getDouble(4)/rs.getInt(3);
}
// rs.next();
}
rs.close();
}catch (Exception e){
e.printStackTrace();
dc.closeConnections();
}
System.out.println(cuenta);
return Prom==0?casos:salProm;
}
El problema es que en lugar de obtener los registros agrupados, me obtiene el total de registros sin agrupar y esto me ocasiona el siguiente mensaje:

java.sql.SQLException: [Microsoft][Administrador de controladores ODBC] Estado del cursor no válido

alguien me puede ayudar en este extraño caso:
Gracias
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

Publicado por aaarffff (1 intervención) el 28/09/2009 17:36:49
copy-pasteado de lady4j.com

Este fallo se suele producir cuando intentamos acceder a un ResultSet sin haber posicionado el cursor en el conjunto de datos valido.

Por ejemplo si intentamos hacer un resultset.getString() pero antes no hemos hecho un resultset.next() puede darse este fallo.

Tambien se puede dar si hacemos un getString dos veces del mismo campo o si hacemos un getString despues de haber terminado de recorrer los resultados validos.
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

Publicado por gzapata (2 intervenciones) el 28/09/2009 17:43:52
Exacto, pero si revisamos el código el cursor empieza en el beforefirst() y cuando comienza la instrucción While ahí se tiene el next(), el problema que estoy detectando es que el query me obtiene 1125 de registros agrupados (cosa correcta) pero el resultset abre 203872 que equivale al total de registros no agrupados que conforman la agrupación (los 1125) y por eso cuando llega al registro 1126 envia el error, eso es lo más extraño.

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