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

    Somma colonne mysql e java

    vorrei stampare la somma delle colonne di un db mysql.
    ho provato così ma mi dice che la colonna nn esiste anche se in verità esiste!!
    codice:
        public static String sum() {
            String somma = "";
            try {
                Class.forName("com.mysql.jdbc.Driver");
                Connection conn = DriverManager.getConnection("jdbc:mysql://local/banca?user=user&password=pass");
                Statement stmt = conn.createStatement();
                ResultSet rs = stmt.executeQuery("select sum(entrate) from movimenti");
                somma = rs.getString("entrate");
                rs.close();
                stmt.close();
            } catch (Exception e) {
                JOptionPane.showMessageDialog(null, e.getMessage());
            } finally {
                return "";
            }
        }

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Puoi riportare il messaggio di errore completo?
    Comunque una somma è un valore numerico, perché lo prendi come stringa? :master:
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    Infatti dalla query "entrate" non esiste... ma esiste "sum(entrate)". Devi dare un alias:

    Codice PHP:
    ResultSet rs stmt.executeQuery("select sum(entrate) as sommaEntrate from movimenti");
    somma rs.getString("sommaEntrate"); 
    Al mio segnale... scatenate l'inferno!

  4. #4
    Originariamente inviato da R@ve M@ster
    Infatti dalla query "entrate" non esiste... ma esiste "sum(entrate)". Devi dare un alias:

    Codice PHP:
    ResultSet rs stmt.executeQuery("select sum(entrate) as sommaEntrate from movimenti");
    somma rs.getString("sommaEntrate"); 
    così:
    codice:
        public static String sum() {
            String somma = "";
            try {
                Class.forName("com.mysql.jdbc.Driver");
                Connection conn = DriverManager.getConnection("jdbc:mysql://62.94.208.157:3306/banca?user=root&password=fermat9211");
                Statement stmt = conn.createStatement();
                ResultSet rs = stmt.executeQuery("select sum(entrate) as sommaEntrate from movimenti");
                somma = rs.getString("sommaEntrate");
                rs.close();
                stmt.close();
            } catch (Exception e) {
                System.out.println(e);
    //            JOptionPane.showMessageDialog(null, e.getMessage());
            } finally {
                return "";
            }
        }
    l'errore è:
    codice:
    java.sql.SQLException
    per quanto riguarda la questione String/int.
    se somma la metto come int:
    codice:
    found   : java.lang.String
    required: int
                somma = rs.getString("sommaEntrate");
    1 error
    per quanto riguarda la questione

  5. #5
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da fermat l'errore è:
    codice:
    java.sql.SQLException
    Stampa l'errore completo usando e.printStackTrace()

    Originariamente inviato da fermat
    per quanto riguarda la questione String/int.
    se somma la metto come int:
    codice:
    found   : java.lang.String
    required: int
                somma = rs.getString("sommaEntrate");
    1 error
    ResultSet non ha solo il metodo getString() sai? C'è anche getInt()
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2009
    Messaggi
    2
    Devi incrementare il puntatore della ResultSet

    codice:
    long somma = 0;
    
    ResultSet rs = stmt.executeQuery("select sum(entrate) as sommaEntrate from movimenti");
    if(rs.next()) {
         somma = rs.getLong("sommaEntrate");
    }

  7. #7
    no nn lo sapevo scusate....

    cmq funziona a parte il fatto che nn mi da il risultato nel frame:
    codice:
    private void jTabbedPane1MouseClicked(java.awt.event.MouseEvent evt) {                                          
            jTextArea1.setText(Movimenti.leggi());
            jTextField5.setText("");
            jTextField6.setText("");
            jTextField7.setText("");
            jTextField8.setText("");
            jTextField11.setText("");
            jTextField12.setText("");
            jTextField13.setText("");
            jTextField14.setText("");
            jTextField9.setText(Somma.sommaEntrate());
        }

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Originariamente inviato da fermat
    no nn lo sapevo scusate....

    cmq funziona a parte il fatto che nn mi da il risultato nel frame:
    codice:
    } finally {
         return "";
    }
    Ovvero: ritorna sempre una stringa vuota, qualunque sia l'esito dell'elaborazione.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  9. #9
    alla fine ho fatto così:
    codice:
        public static int sommaEntrate() {
            int somma = 0;
            try {
                Class.forName("com.mysql.jdbc.Driver");
                Connection conn = DriverManager.getConnection("jdbc:mysql://......");
                Statement stmt = conn.createStatement();
                ResultSet rs = stmt.executeQuery("select sum(entrate) as sommaEntrate from movimenti");
                if (rs.next()) {
                    somma = rs.getInt("sommaEntrate");
                }
                rs.close();
                stmt.close();
            } catch (Exception e) {
                JOptionPane.showMessageDialog(null, e.getMessage());
            } finally {
                return somma;
            }
        }
    solo che per riempire la textfield con un int ho fatto così:
    codice:
            String entrate = Integer.toString(Somma.sommaEntrate());
            jTextField9.setText(entrate);
    c'è un'altra maniera per riempire le text field con un int??

  10. #10
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Esistono altre strade, ma sono tutte ricondicibili a quella che hai usato:

    codice:
    // Primo esempio (poco performante, ma di facile lettura)
    int entrate = Somma.sommaEntrate();
    jTextField9.setText("" + entrate);
    
    // Secondo esempio
    int entrate = Somma.sommaEntrate();
    jTextField9.setText( new String(entrate) );
    
    // Terzo esempio
    int entrate = Somma.sommaEntrate();
    jTextField9.setText( String.valueOf(entrate) );
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

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.