Ho fatto questa classe:

codice:
public class QueryMaker{
  private Connection dbConnection;
  private Statement last_stmt;

  public ResultSet makeQuery(String query){
    try{
      if (dbConnection==null){
        Class.forName("com.mysql.jdbc.Driver").newInstance();
        dbConnection = DriverManager.getConnection("jdbc:mysql://127.0.0.1/euro_express?user=root&password=root");
      }
      Statement stmt = dbConnection.createStatement();
      return stmt.executeQuery(query);
    }
    catch (Exception ex){
      System.out.println(">"+ex);
      //System.exit(-1);
      return null;
    }
  }

  public boolean makeUpdateQuery(String query){
    try{
      if (dbConnection==null){
        Class.forName("com.mysql.jdbc.Driver").newInstance();
        dbConnection = DriverManager.getConnection("jdbc:mysql://127.0.0.1/euro_express?user=root&password=root");
      }
      Statement stmt = dbConnection.createStatement();
      stmt.executeUpdate(query,Statement.RETURN_GENERATED_KEYS);
      last_stmt = stmt;
      return true;
    }
    catch (Exception ex){
      System.out.println(">"+ex);
      return false;
      //System.exit(-1);
    }
  }

  public int getLastKey(){
    try{
      ResultSet set = last_stmt.getGeneratedKeys();
      set.next();
      return set.getInt(0);
    }
    catch(Exception ex){
      System.out.println(ex);
      return -1;
    }
  }
}
Per con la successione di chiamate makeUpdateQuery(...), getLastKey() non riesco a ottenere la chiave generata ma un'eccezione?
(Ovviamente con makeUpdateQuery(...) che va a buon fine).

Questa l'eccezione che ottengo:
java.sql.SQLException: Column Index out of range ( 0 > 1).