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"; 
        }