Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [java] problema con getGeneratedKeys()

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


  2. #2

  3. #3
    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".


  4. #4
    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
    Life is too short to spend it hoping or crying...JUST LIVE IT!

  5. #5
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301
    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.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.