DanielVd ha scritto:
public void disconnetti() {
try {
if (stmt != null) {
stmt.close();
}
if (conn != null) {
DriverManager.getConnection(dbURL + ";shutdown=true");
conn.close();
//System.out.println("Disconnessione dal server effettuata con successo!");
}
} catch (SQLException e) {
System.out.println("Errore su disconnetti: " + e.toString());
}
}
L'errore e' concettuale!
PRIMA forzi lo shutdown del DBMS,
POI chiudi la connessione, che ormai e' gia' chiusa.
La logica dice che le operazioni vanno fatte al contrario.
Riassunto. JDBC si usa cosi:
1) caricamento del driver del DBMS affinche' si registri nella mappa dei driver disponibili del DriverManager. Lo si fa una sola volta alla partenza del programma
2) creazione connessione
3) creazione statement
4) esecuzione statement e creazione resultset.
5) utilizzo resultset
6) chiusura resultset
7) se di e' utilizzato un semplice statement, close statement goto 3), se un preparedstatement, impostazione nuovi parametri, goto 4)
close statement
9) close connection
Tra connessione, statement e resultset c'e' uno stretto ordine gerarchico. Se si chiude la connessione, in automatico vengono chiusi tutti gli statement ed i resultset che dipendono da questa connessione. Ed ovviamente, se si fa lo shtdown del db, ...