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:
questa è la parte riguardante la JTable: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; } }
E questa è l'errore che mi da.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);
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)

Rispondi quotando
