Mi sembra di aver risolto, ditemi un po' che ne pensate. Questo è il metodo di inserimento:
codice:
public static void insertMenu(String field) {
PreparedStatement statement = null;
//verifico che l'utente non abbia inserito un campo vuoto
try {
if (field == null || field.isEmpty()) {
JOptionPane.showMessageDialog(bla1);
return;
}
//inserisco fisicamente nel db il nuovo menu
statement = connection.prepareStatement("INSERT INTO Menu VALUES (NULL, ?)");
statement.setString(1, field);
result=statement.executeUpdate();
//catturo le eccezioni e chiudo lo statement per liberare risorse
} catch (SQLIntegrityConstraintViolationException ex) {
JOptionPane.showMessageDialog(bla2);
} catch (SQLException e) {
JOptionPane.showMessageDialog(bla3);
Logger.getLogger(DBConnection.class.getName()).log(Level.SEVERE, null, e);
}
finally {
if (statement != null) {
try {
statement.close();
} catch (SQLException ex) {
Logger.getLogger(DBConnection.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
}
Nell'azione del pulsante che gestisce il salvataggio (e quindi richiama il metodo di cui sopra) ho messo un
if (DBConnection.result==1) allora fai quello che devi (per il momento solo attivare altri campi) altrimenti rimani come stai.
result l'ho dichiarata public e static.
EDIT: ho subito trovato l'inghippo, se faccio un inserimento che va a buon fine dopo non va più probabilmente per via del fatto che result rimane su 1... ho aggiunto quindi un result=0 prima di result=statement.executeUpdate();
adesso mi sembra che va