java - UCanAccess Exception: cannot getMetaData from ResultSet (invalid cursor state) -
i'm trying data access table , show on jtable. i'm using ucanaccess java 8 not support jdbc-odbc.
my window class calls charging methods:
ctrlgestionventas= new ctrlgestionventas(); ctrlgestionventas.cargarlistaventas(tbllistaventas);
then, ctrlgestionventas.cargarlistaventas(tabla) fills jtable resultset:
public class ctrlgestionventas { public void cargarlistaventas(jtable tabla) { resultset rs; dataventas dv = new dataventas(); rs = dv.getlistaventas(); try { tabla.setmodel(buildtablemodel(rs)); rowsorter sorter = new tablerowsorter(buildtablemodel(rs)); tabla.setrowsorter(sorter); tabla.gettableheader().setdefaultrenderer(new multisorttablecellheaderrenderer()); } catch (sqlexception e) { // todo auto-generated catch block e.printstacktrace(); } } public static defaulttablemodel buildtablemodel(resultset rs) throws sqlexception { resultsetmetadata metadata = rs.getmetadata(); /*this line apparently provokes error*/ // names of columns vector<string> columnnames = new vector<string>(); int columncount = metadata.getcolumncount(); (int column = 1; column <= columncount; column++) { columnnames.add(metadata.getcolumnname(column)); } // data of table <vector<object>> data = new vector<vector<object>>(); while (rs.next()) { vector<object> vector = new vector<object>(); (int columnindex = 1; columnindex <= columncount; columnindex++) { vector.add(rs.getobject(columnindex)); } data.add(vector); } return new defaulttablemodel(data, columnnames); } }
here's resultset getter method, in dataventas class (note: factoryconexion has connectionstring, ommited in post):
public class dataventas { public resultset getlistaventas() { preparedstatement stmt=null; resultset rs=null; try { stmt = factoryconexion.getinstancia().getconn().preparestatement("select * ventasfinal"); rs = stmt.executequery(); } catch (sqlexception ex) { system.out.println("sqlexception: " + ex.getmessage()); } finally{ try { if (rs!=null) rs.close(); if (stmt!=null)stmt.close(); } catch (sqlexception e) { e.printstacktrace(); } } return rs; } }
when execute, following:
net.ucanaccess.jdbc.ucanaccesssqlexception: ucaexc:::3.0.6 estado del cursor incorrecto: cursor indicado no está abierto @ net.ucanaccess.jdbc.ucanaccessresultset.getmetadata(ucanaccessresultset.java:480) @ negocio.ctrlgestionventas.buildtablemodel(ctrlgestionventas.java:37) @ negocio.ctrlgestionventas.cargarlistaventas(ctrlgestionventas.java:22) @ ui.gestionventas.<init>(gestionventas.java:85) @ ui.gestionventas$1.run(gestionventas.java:63) @ java.awt.event.invocationevent.dispatch(unknown source) @ java.awt.eventqueue.dispatcheventimpl(unknown source) @ java.awt.eventqueue.access$500(unknown source) @ java.awt.eventqueue$3.run(unknown source) @ java.awt.eventqueue$3.run(unknown source) @ java.security.accesscontroller.doprivileged(native method) @ java.security.protectiondomain$javasecurityaccessimpl.dointersectionprivilege(unknown source) @ java.awt.eventqueue.dispatchevent(unknown source) @ java.awt.eventdispatchthread.pumponeeventforfilters(unknown source) @ java.awt.eventdispatchthread.pumpeventsforfilter(unknown source) @ java.awt.eventdispatchthread.pumpeventsforhierarchy(unknown source) @ java.awt.eventdispatchthread.pumpevents(unknown source) @ java.awt.eventdispatchthread.pumpevents(unknown source) @ java.awt.eventdispatchthread.run(unknown source) caused by: java.sql.sqlexception: estado del cursor incorrecto: cursor indicado no está abierto @ org.hsqldb.jdbc.jdbcutil.sqlexception(unknown source) @ org.hsqldb.jdbc.jdbcutil.sqlexception(unknown source) @ org.hsqldb.jdbc.jdbcutil.sqlexception(unknown source) @ org.hsqldb.jdbc.jdbcresultset.checkclosed(unknown source) @ org.hsqldb.jdbc.jdbcresultset.getmetadata(unknown source) @ net.ucanaccess.jdbc.ucanaccessresultset.getmetadata(ucanaccessresultset.java:478) ... 18 more caused by: org.hsqldb.hsqlexception: estado del cursor incorrecto: cursor indicado no está abierto @ org.hsqldb.error.error.error(unknown source) @ org.hsqldb.error.error.error(unknown source) ... 22 more net.ucanaccess.jdbc.ucanaccesssqlexception: ucaexc:::3.0.6 estado del cursor incorrecto: cursor indicado no está abierto @ net.ucanaccess.jdbc.ucanaccessresultset.getmetadata(ucanaccessresultset.java:480) @ negocio.ctrlvendedores.buildtablemodel(ctrlvendedores.java:38) @ negocio.ctrlvendedores.cargarlistavendedores(ctrlvendedores.java:23) @ ui.gestionventas.<init>(gestionventas.java:95) @ ui.gestionventas$1.run(gestionventas.java:63) @ java.awt.event.invocationevent.dispatch(unknown source) @ java.awt.eventqueue.dispatcheventimpl(unknown source) @ java.awt.eventqueue.access$500(unknown source) @ java.awt.eventqueue$3.run(unknown source) @ java.awt.eventqueue$3.run(unknown source) @ java.security.accesscontroller.doprivileged(native method) @ java.security.protectiondomain$javasecurityaccessimpl.dointersectionprivilege(unknown source) @ java.awt.eventqueue.dispatchevent(unknown source) @ java.awt.eventdispatchthread.pumponeeventforfilters(unknown source) @ java.awt.eventdispatchthread.pumpeventsforfilter(unknown source) @ java.awt.eventdispatchthread.pumpeventsforhierarchy(unknown source) @ java.awt.eventdispatchthread.pumpevents(unknown source) @ java.awt.eventdispatchthread.pumpevents(unknown source) @ java.awt.eventdispatchthread.run(unknown source) caused by: java.sql.sqlexception: estado del cursor incorrecto: cursor indicado no está abierto @ org.hsqldb.jdbc.jdbcutil.sqlexception(unknown source) @ org.hsqldb.jdbc.jdbcutil.sqlexception(unknown source) @ org.hsqldb.jdbc.jdbcutil.sqlexception(unknown source) @ org.hsqldb.jdbc.jdbcresultset.checkclosed(unknown source) @ org.hsqldb.jdbc.jdbcresultset.getmetadata(unknown source) @ net.ucanaccess.jdbc.ucanaccessresultset.getmetadata(ucanaccessresultset.java:478) ... 18 more caused by: org.hsqldb.hsqlexception: estado del cursor incorrecto: cursor indicado no está abierto @ org.hsqldb.error.error.error(unknown source) @ org.hsqldb.error.error.error(unknown source) ... 22 more
note last line marked in debugger 1 @ buildtablemodel method (rs.getmetadata()). what's going on here?
thanks time!
that method gets resultset, closes in block. can't use resultset @ all. have re-organize code.
Comments
Post a Comment