Ciao a tutti, sto sviluppando una piccola applicazione in java che riesce a connettersi al database senza passare dall'ODBC, il problema è che quando provo a passare il risultato di una query ad una JTable il programma genera l'eccezzione RESULT SET IS CLOSED.
VI posto il codice e l'errore così potete vedere meglio:
codice:
/*------------------------metodo connessione db senza ODBC---------------------*/
public String ottieniPercorso(){
String path = (System.getProperty("user.dir")) + "/SEDUTE.mdb";
return path;
}
public ResultSet openConnection(){
Connection con;
String query;
Statement st = null;
try{
String driver = "sun.jdbc.odbc.JdbcOdbcDriver";
Class.forName(driver);
con=DriverManager.getConnection("jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ="+this.ottieniPercorso());
JOptionPane.showMessageDialog(null,"Connessione Riuscita ","Messaggio:",0,null);
query="SELECT * FROM sedute";
st = con.createStatement();
this.rs = st.executeQuery(query);
con.close();
return this.rs;
}catch(SQLException | ClassNotFoundException e){
JOptionPane.showMessageDialog(null,"Connessione Fallita: "+e.getMessage(),"Messaggio:",0,null);
return null;
}
}
questa è la parte riguardante la JTable:
codice:
JScrollPane areaTabella = new JScrollPane();
areaTabella.setBounds(10, 449, 430, 85);
menu.add(areaTabella);
JTable tabella = new JTable();
//CREO LA TABELLA CHE RICEVE IN INGRESSO UN RESULTSET
try{
ResultSet rs1 = this.openConnection();
ResultSetMetaData rsmd = rs1.getMetaData();
int numeroColonna = rsmd.getColumnCount();
DefaultTableModel modello = new DefaultTableModel();
this.tabella.setModel(modello);
for(int i = 1; i <= numeroColonna; i++){
modello.addColumn(rsmd.getColumnLabel(i));
}
while(rs1.next()){
Object [] riga = new Object[numeroColonna];
for(int j=0; j < numeroColonna; j++)
riga[j] = rs1.getObject(j+1);
modello.addRow(riga);
}
}catch(SQLException se){
se.printStackTrace();
}
areaTabella.setViewportView(tabella);
E questa è l'errore che mi da.
codice:
java.sql.SQLException: ResultSet is closed
at sun.jdbc.odbc.JdbcOdbcResultSet.checkOpen(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcResultSet.getMetaData(Unknown Source)
at Gui.initialize(Gui.java:278)
at Gui.<init>(Gui.java:93)
at Gui$1.run(Gui.java:80)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$200(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)