Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    258

    Recuperare una chiave autoincrementata...

    Salve ragazzi,
    ho un problema a dir poco pazzesco che mi sta mandando nel panico.
    Ho realizzato un'applicazione in jsf che si interfaccia con Mysql e
    devo realizzare l'inserimento in una tabella che ha un campo id di tipo
    autoincrementato(intero).
    Devo far sì di recuperare l'id dopo l'inserimento perchè mi serve per
    fare ulteriori inserimenti in altre tabelle.
    Ho realizzato un metodo che dovrebbe farlo, ne ho fatto un debugging
    assicurandomi che attravaersasse i cicli e i controlli giusti e tutto
    va bene.
    Il problema è che il valore che mi restituisce(l'indice della chiave)
    è sempre 0!!!!!
    Come posso risolvere il problema?
    Vi prego aiutatemi,non so più dove sbattere la testa.....grazie,ecco
    il metodo
    codice:
    public String AddNewExp() throws Exception { 
    
    
                    DataSource dataSource = Singleton.getInstance().getDataSource(); 
    
    
                    Connection conn = dataSource.getConnection(); 
    
    
                    if (conn != null) { 
                            AuthenticationBean bean2 = (AuthenticationBean) ViewUtils 
                                            .eval("#{authenticationBean}"); 
    
    
                            PreparedStatement pst2 = null; 
                            pst2 = conn     .prepareStatement("INSERT INTO 
    esperimento(username,nometeam,piattaforma,links_url,tipoesperimento,control_liqualita,brevedescrizione,numeroibridazioni,autore,laboratorio,contatti,pr_otocolloscansione,softwareanalisi,tiponormalizzazione,scalalogaritmica,test_,parametri,fattoredicorrezione,fattore1,fattore2,fattore3,fattore4) 
    VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", 
                                                            Statement.RETURN_GENERATED_KEYS); 
                            pst2.setString(1, bean2.getLoginName()); 
                            pst2.setString(2, bean2.getTeamName()); 
                            pst2.setString(3, platformName); 
                            pst2.setString(4, links); 
                            pst2.setString(5, toe); 
                            pst2.setString(6, qcst); 
                            pst2.setString(7, description); 
                            pst2.setInt(8, hybridationNumbers); 
                            pst2.setString(9, author); 
                            pst2.setString(10, laboratory); 
                            pst2.setString(11, contact); 
                            pst2.setString(12, scanning); 
                            pst2.setString(13, software); 
                            pst2.setString(14, normalization); 
                            pst2.setString(15, logarithmic); 
                            pst2.setString(16, test); 
                            pst2.setString(17, parameter); 
                            pst2.setString(18, correction); 
                            pst2.setString(19, factor1); 
                            pst2.setString(20, factor2); 
                            pst2.setString(21, factor3); 
                            pst2.setString(22, factor4); 
                            ResultSet rs=null; 
    
    
                                    pst2.executeUpdate(); 
    
    
                                    u=2; 
                                    int autoIncKeyFromFunc = -1; 
                            u=3; 
                                rs = pst2.executeQuery("SELECT LAST_INSERT_ID()"); 
                               u=4; 
    
    
                                if (rs.next()) { 
                                   u=5; 
                                    autoIncKeyFromFunc = rs.getInt(1); 
                                    u=6; 
                                } else {u=7; 
                                    // throw an exception from here 
                                } 
    
    
                                rs.close(); 
                                pst2.close(); 
                             } 
    
    
                            conn.close(); 
                            return "go"; 
            }

  2. #2
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    credo che LAST_INSERT_ID funzioni solo se la insert ha tra i campi la colonna auto e valore null
    INSERT INTO esperimento (campo_auto, ...)
    VALUES (NULL, ...)

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    258
    ho provato ma niente......
    vi prego aiutatemi......mi dà sempre 0 come risultato...

  4. #4
    visto che è autoincrementante, se SELECT_LAST_ID non funziona, cosa ne pensi di fare la seguente query e poi di prenderti il risultato?
    codice:
     select max(id) as maxid from esperimento;
    dovrebbe funzionare!!!
    stex1984

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 © 2025 vBulletin Solutions, Inc. All rights reserved.