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).