Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2013
    Messaggi
    158

    Risultato Query in ArrayList o Array

    Buon giorno a tutti sto cercando di filtrarmi dei dati di un database con ArrayList o un Array ho cercato sul forum ma non trovo niente di esaustivo volevo filtrare un'intera colonna ho fatto cosi ma mi da solo il prima riga che trova.
    resultSet dovrebbe immagazzinare tutta la riga completa o sbaglio?

    codice:
    private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {                                         
     
            String dataa = ((JTextField)data_a.getDateEditor().getUiComponent()).getText();
                         String datada = ((JTextField)data_da.getDateEditor().getUiComponent()).getText();
                 try{
                                 
                                 String sql2 = "SELECT * FROM CompensoOp WHERE(nome=?) AND (compenso ) AND(data BETWEEN ? AND ?)";
                                 pst = conn.prepareStatement(sql2);
                                 pst.setString(1, combo_op.getSelectedItem().toString());
                                 pst.setString(2,datada);
                                 pst.setString(3,datada);
                                 
                                 rs=pst.executeQuery();
                                 
                           ArrayList <String> result = new ArrayList<String>();
                          
                           result.add( rs.getString("compenso") );
                           
    
    
                            for (int i=0; i <result.size(); i++)
                            {
                                String x = (result.get(i));
                               
                               System.out.println(x);
                            }
                             }catch(Exception e){
                             
                             }      
        }

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Risultato Query in ArrayList o Array

    Originariamente inviato da Nio74
    volevo filtrare un'intera colonna ho fatto cosi ma mi da solo il prima riga che trova.
    resultSet dovrebbe immagazzinare tutta la riga completa o sbaglio?
    Se vuoi solo la colonna "compenso" ma prendendola di tutte le righe, devi comunque fare un ciclo usando il next() di ResultSet.
    Così come hai fatto, prendi solo il compenso della prima riga (result ha size 1).


    P.S. sicuro che il BETWEEN delle date funzioni con parametri String??
    E tra l'altro:
    pst.setString(2,datada);
    pst.setString(3,datada); //uguale??
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2013
    Messaggi
    158
    Ho fatto cosi:


    codice:
    private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {                                         
     
                         String dataa = ((JTextField)data_a.getDateEditor().getUiComponent()).getText();
                         String datada = ((JTextField)data_da.getDateEditor().getUiComponent()).getText();
                 try{
                                 
                                 String sql2 = "SELECT * FROM CompensoOp WHERE(nome=?) AND (compenso ) AND(data BETWEEN ? AND ?)";
                                 pst = conn.prepareStatement(sql2);
                                 pst.setString(1, combo_op.getSelectedItem().toString());
                                 pst.setString(2,datada);
                                 pst.setString(3,dataa);
                                 
                                 rs=pst.executeQuery();
                                 
                          ArrayList <String> result = new ArrayList<String>();
                                 
                                 
                       while(rs.next()){
                           result.add( rs.getString("compenso") );
                            for (int i=0; i <result.size(); i++)
                            {
                                String x = (result.get(i));
                            
                               System.out.println(x);
                            }
                            }
                             }catch(Exception e){
                             
                             }        
        }

    il risultato dovrebbe essere
    2500
    300
    500


    Invece viene fuori sballato

    2500.0
    2500.0
    300.0
    2500.0
    300.0
    500.0

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Nio74
    codice:
                       while(rs.next()){
                           result.add( rs.getString("compenso") );
                            for (int i=0; i <result.size(); i++)
                            {
                                String x = (result.get(i));
                            
                               System.out.println(x);
                            }
                            }
                             }catch(Exception e){
                             
                             }
    Per ogni riga, aggiungi in result il compenso. Ma sempre per ogni riga cicli sul result che è già comprensivo di tutti quelli prima.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2013
    Messaggi
    158
    Originariamente inviato da Nio74
    Ho fatto cosi:


    codice:
    private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {                                         
     
                         String dataa = ((JTextField)data_a.getDateEditor().getUiComponent()).getText();
                         String datada = ((JTextField)data_da.getDateEditor().getUiComponent()).getText();
                 try{
                                 
                                 String sql2 = "SELECT * FROM CompensoOp WHERE(nome=?) AND (compenso ) AND(data BETWEEN ? AND ?)";
                                 pst = conn.prepareStatement(sql2);
                                 pst.setString(1, combo_op.getSelectedItem().toString());
                                 pst.setString(2,datada);
                                 pst.setString(3,dataa);
                                 
                                 rs=pst.executeQuery();
                                 
                          ArrayList <String> result = new ArrayList<String>();
                                 
                                 
                       while(rs.next()){
                           result.add( rs.getString("compenso") );
                            for (int i=0; i <result.size(); i++)
                            {
                                String x = (result.get(i));
                            
                               System.out.println(x);
                            }
                            }
                             }catch(Exception e){
                             
                             }        
        }

    il risultato dovrebbe essere
    2500
    300
    500


    Invece viene fuori sballato

    2500.0
    2500.0
    300.0
    2500.0
    300.0
    500.0

    Non Capisco bene mi puoi fare un esempio?

  6. #6
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da Nio74
    Non Capisco bene mi puoi fare un esempio?
    codice:
    while(rs.next()) {
        result.add(rs.getString("compenso"));
        for (int i=0; i <result.size(); i++)
        {
            String x = (result.get(i));
                            
            System.out.println(x);
            }
        }
    E' molto semplice.

    Col ciclo while scorri tutte le righe restituite dalla query.
    PER CIASCUNA RIGA prendi la colonna compenso e la metti in un ArrayList. Sempre nel ciclo WHILE scorri poi tutti gli elementi dell'ArrayList e li stampi.. Noti niente di strano?
    Ad ogni iterazione stai stampando tutto l'ArrayList!
    Dato che non credo sia il tuo obiettivo, sposta il for fuori dal while...
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2013
    Messaggi
    158
    Originariamente inviato da Alex'87
    codice:
    while(rs.next()) {
        result.add(rs.getString("compenso"));
        for (int i=0; i <result.size(); i++)
        {
            String x = (result.get(i));
                            
            System.out.println(x);
            }
        }
    E' molto semplice.

    Col ciclo while scorri tutte le righe restituite dalla query.
    PER CIASCUNA RIGA prendi la colonna compenso e la metti in un ArrayList. Sempre nel ciclo WHILE scorri poi tutti gli elementi dell'ArrayList e li stampi.. Noti niente di strano?
    Ad ogni iterazione stai stampando tutto l'ArrayList!
    Dato che non credo sia il tuo obiettivo, sposta il for fuori dal while...

    Grande Alex

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.