PDA

Visualizza la versione completa : [JAVA] Problema con getGeneratedKeys()


superpelo
23-12-2005, 00:11
Ho fatto questa classe:



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

:dhò:

superpelo
23-12-2005, 13:36
up

superpelo
24-12-2005, 12:04
Ho scoperto una cosa strana che probabilmente è concausa del mancato funzionamento della mia classe; vorrei ora capire il perchè:

se faccio una query e vado poi a esplorare il ResultSet ottenuto ottengo che il metodo result.getInt(2) non funziona, mentre result.getInt("campo_numerico") mi restituisce correttamente il dato che mi aspetto.

Ovviamente la colonna 2 corrisponde a "campo_numerico".

:confused:

CheCk_OUTSIDE
02-04-2008, 16:01
Ti da errore perchè resultSet partono da 1 e non da 0.. è per quello che ti da errore!!

http://java.sun.com/j2se/1.4.2/docs/api/index.html

Il doc è un po' datato.. ma il comportamento è quello!

CheCk

alka
02-04-2008, 21:18
Originariamente inviato da CheCk_OUTSIDE
Il doc è un po' datato..

Anche la discussione lo è. Non risollevare o rispondere a discussioni che sono ormai concluse da tempo, come da Regolamento (http://forum.html.it/forum/showthread.php?s=&threadid=973887).

Loading