Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2000
    Messaggi
    1,175

    [Servlet] Update che non viene eseguito...

    Allora ho un metodo creaSQL() che crea una stringa SQL, stringa perfettamente funzionante perchè l'ho incollata direttamente nella finesta MySQL ed effettua l'upgrade:
    codice:
    INSERT INTO q (id_u, id_q, id_d, p) VALUES(1, 4, 2, 1), (1, 4, 3, 2), (1, 4, 1, 3)
    Supponiamo quindi che quindi il metodo creaSQL sia così:
    codice:
    protected String creaSQL(int id_usr) throws ClassNotFoundException, SQLException {
      String sql = "INSERT INTO q (id_u, id_q, id_d, p) VALUES(1, 4, 2, 1), (1, 4, 3, 2), (1, 4, 1, 3)";
      return sql;
    }
    Fin qui sembrerebbe tutto ok, ora all'interno della servlet avrò un altro metodo che prende la stringa sql e la deve eseguire:
    codice:
    protected String execQuery(int id_usr) throws ClassNotFoundException, SQLException {
            String msg="dentro";
            String sql = creaSQL(id_usr);
            Class.forName("com.mysql.jdbc.Driver");
            Connection conn = DriverManager.getConnection("url","user","pass");
            Statement st = conn.createStatement();
            int query = st.executeUpdate(sql);
                    
            if (query==1) {
                msg = "OK..."; 
            } else {
                msg = "C'è stato un errore!!!";
            }
            //conn.close();
            return msg;
        }
    Ma in return nn mi da nulla, manco "dentro". Se invece commento tutta la parte di codice in rosso, la parola "dentro" mi viene restituita.

    Dove sbaglio???

  2. #2
    Ho provato il tuo codice e a me funziona perfettamente. Prova a racchiudere la parte incriminata in un try catch per vedere se viene lanciata qualche eccezione
    Al mio segnale... scatenate l'inferno!

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2000
    Messaggi
    1,175
    Originariamente inviato da R@ve M@ster
    Ho provato il tuo codice e a me funziona perfettamente. Prova a racchiudere la parte incriminata in un try catch per vedere se viene lanciata qualche eccezione
    non me lo spiego, infatti faticavo a cercare un errore

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2000
    Messaggi
    1,175
    Perfetto.
    Tutto risolto, era un "errore" di MySQL. Avevo tutti i campi NOT NULL, la stringa che componiQuerySQL() mi generava l'avevo creata in modo da non considerare gli ultimi due campi. La stringa generata in phpMyAdmin funzionava e faceva l'inserimento, quando invece l'inserimento lo tentavo da NetBeans non accettava, (come era giusto che sia stato), un valore NULL per un campo NOT NULL.

    Se mi fosse andato in errore pure PHPMyAdmin me ne sarei accorto

    Ora però c'è un altro problema, molto minore...
    codice:
    //...
    if (query==1) {
                msg = "OK...";
            } else {
                msg = "C'è stato un errore!!!";
            }
    //...
    Questo pezzo di codice dovrebbe controllarmi se ci sono stati o meno errori, a me restituisce "C'è stato un errore" però poi i dati nel DB li inserisce.


    PS: Ho provato a stampare il valore di query ed è 3, siccome io effettuo un insert multiplo, neanche a farlo apposta di 3 righe mi sa che l'if di sopra è più sensato farlo come:
    codice:
    //...
    if (query==0) {
                msg = "C'è stato un errore!!!";
            } else {
                msg = "OK...";
            }
    //...

  5. #5
    PS: Ho provato a stampare il valore di query ed è 3, siccome io effettuo un insert multiplo, neanche a farlo apposta di 3 righe mi sa che l'if di sopra è più sensato farlo come:
    Si, perchè executeUpdate ti ritorna come valore il numero di record coinvolti nella query... se hai 3 insert quindi ritorna 3.
    Al mio segnale... scatenate l'inferno!

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.