ResultSet y beforeFirst()
Necesito recorrer varias veces el mismo ResulSet, mi intencion era situar su cursor al principio con beforeFirst en cada iteracion del bucle, pero no se porque me da fallo asi que me veo obligado a inicializarlo cada vez repitiendo la consulta, lo cual debe ser menos eficiente.
¿Por qué me falla el beforeFirst? ¿como puedo solucianoralo?
Me dice esto pero no lo entiendo:
[05/jul /2003:12:29:36] failure ( 997): Internal error: exception thrown from the servlet service function (uri=/html/mostrarBD.jsp): javax.servlet.ServletException: Invalid operation for forward only resultset : beforeFirst, stack: javax.servlet.ServletException: Invalid operation for forward only resultset : beforeFirst
at java.lang.Throwable.fillInStackTrace(Native Method)
at java.lang.Throwable.fillInStackTrace(Compiled Code)
at java.lang.Throwable.<init>(Compiled Code)
at java.lang.Exception.<init>(Compiled Code)
at javax.servlet.ServletException.<init>(Compiled Code)
at org.apache.jasper.runtime.PageContextImpl.handlePageException(Compiled Code)
at _jsps._html._mostrarBD_jsp._jspService(Compiled Code)
at org.apache.jasper.runtime.HttpJspBase.service(Compiled Code)
at javax.servlet.http.HttpServlet.service(Compiled Code)
at com.netscape.server.http.servlet.NSServletRunner.Service(Compiled Code)
, root cause: java.sql.SQLException: Invalid operation for forward only resultset : beforeFirst
at java.lang.Throwable.fillInStackTrace(Native Method)
at java.lang.Throwable.fillInStackTrace(Compiled Code)
at java.lang.Throwable.<init>(Compiled Code)
at java.lang.Exception.<init>(Compiled Code)
at java.sql.SQLException.<init>(Compiled Code)
at oracle.jdbc.dbaccess.DBError.throwSqlException(Compiled Code)
at oracle.jdbc.dbaccess.DBError.throwSqlException(Compiled Code)
at oracle.jdbc.driver.BaseResultSet.beforeFirst(Compiled Code)
at _jsps._html._mostrarBD_jsp._jspService(Compiled Code)
at org.apache.jasper.runtime.HttpJspBase.service(Compiled Code)
at javax.servlet.http.HttpServlet.service(Compiled Code)
at com.netscape.server.http.servlet.NSServletRunner.Service(Compiled Code)
¿Por qué me falla el beforeFirst? ¿como puedo solucianoralo?
Me dice esto pero no lo entiendo:
[05/jul /2003:12:29:36] failure ( 997): Internal error: exception thrown from the servlet service function (uri=/html/mostrarBD.jsp): javax.servlet.ServletException: Invalid operation for forward only resultset : beforeFirst, stack: javax.servlet.ServletException: Invalid operation for forward only resultset : beforeFirst
at java.lang.Throwable.fillInStackTrace(Native Method)
at java.lang.Throwable.fillInStackTrace(Compiled Code)
at java.lang.Throwable.<init>(Compiled Code)
at java.lang.Exception.<init>(Compiled Code)
at javax.servlet.ServletException.<init>(Compiled Code)
at org.apache.jasper.runtime.PageContextImpl.handlePageException(Compiled Code)
at _jsps._html._mostrarBD_jsp._jspService(Compiled Code)
at org.apache.jasper.runtime.HttpJspBase.service(Compiled Code)
at javax.servlet.http.HttpServlet.service(Compiled Code)
at com.netscape.server.http.servlet.NSServletRunner.Service(Compiled Code)
, root cause: java.sql.SQLException: Invalid operation for forward only resultset : beforeFirst
at java.lang.Throwable.fillInStackTrace(Native Method)
at java.lang.Throwable.fillInStackTrace(Compiled Code)
at java.lang.Throwable.<init>(Compiled Code)
at java.lang.Exception.<init>(Compiled Code)
at java.sql.SQLException.<init>(Compiled Code)
at oracle.jdbc.dbaccess.DBError.throwSqlException(Compiled Code)
at oracle.jdbc.dbaccess.DBError.throwSqlException(Compiled Code)
at oracle.jdbc.driver.BaseResultSet.beforeFirst(Compiled Code)
at _jsps._html._mostrarBD_jsp._jspService(Compiled Code)
at org.apache.jasper.runtime.HttpJspBase.service(Compiled Code)
at javax.servlet.http.HttpServlet.service(Compiled Code)
at com.netscape.server.http.servlet.NSServletRunner.Service(Compiled Code)
Cuando crear el resultset, tienes que pasarle dos parametros a metodo createStatement(), para permitirle accesos no secuenciales. Por defecto solo te deja acceder secuenciamente.
Ejemplo
Statement stmt = con.createStatement(
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);
Saludos.
Ejemplo
Statement stmt = con.createStatement(
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);
Saludos.