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

    [JAVA] Problema ricerca in database con Document Listener

    Salve a tutti!
    Ho un problema che non riesco a risolvere, ho provato anche a googlare e a cercare qui, ma non ho trovato niente, o, meglio, niente che risolva il mio problema :P

    Avrei bisogno che in un JTextField, ad ogni lettera digitata si effettui una query di ricerca e che riaggiorni la tabella.
    Ho fatto così, ma -ovviamente- non funziona

    codice:
     // metodo che esegue la query e aggiorna la tabella
    public void popola(String query) {
                ResultSet rs = db.eseguiQuery(query);
            try { 
                 java.sql.ResultSetMetaData rsmd = rs.getMetaData();
         
                // definisco il modello della tabella
                 String[] tableColumnsName = {"Codice","Tessera","Nome","Cognome"}; 
                DefaultTableModel aModel = (DefaultTableModel) taBBella.getModel();
                aModel.setColumnIdentifiers(tableColumnsName);
                 // trasferimento sul modello
                int colNo = rsmd.getColumnCount();
                while(rs.next()){
                     Object[] objects = new Object[colNo];
                    for(int i=0;i<colNo;i++){
                         objects[i]=rs.getObject(i+1);
                    }
                     aModel.addRow(objects);
                }
                 taBBella.setModel(aModel);
             } catch(SQLException e) {
              
          }   
       }
    
     // il document listener sulla texfield 'cerca'
    
    cerca.getDocument().addDocumentListener(new DocumentListener(){ 
                public void changedUpdate(DocumentEvent e){check();}
                public void removeUpdate(DocumentEvent e){check();}
                public void insertUpdate(DocumentEvent e){check();}
            });
    
    // metodo 'check' che esegue il listener
    public void check() {
         String getcampo =  " '" + cerca.getText() + "%' ";
         String campo = "SELECT * FROM tabella_clienti WHERE 'nome' LIKE " + getcampo + ";"; //esempio di ricerca 
         popola(campo);
     }
    Qualcuno sa dirmi dove sbaglio?
    Grazie in anticipo.
    Saluti!
    CPU: i5 @ 3.0 GHz | Scheda Video: SAPPHIRE ATI HD5670 | Motherboard: ASUS P7P55D | RAM: 4GB Corsair DDR3 | Case: Cooler Master Centurion 534 Lite Nero | HD: WD SATA 500 GB | Monitor: ASUS 22" 22T1E Full HD | OS: Windows 7 Pro. x64

  2. #2
    Se a qualcuno puo' interessare, ho risolto così

    codice:
     public void check() {
    DefaultTableModel aModel = (DefaultTableModel) taBBella.getModel();
            
         TableRowSorter<TableModel> sorter = new TableRowSorter<TableModel>(aModel);
         taBBella.setRowSorter(sorter);
            
            String setCerca = cerca.getText();
                 if (setCerca.length() != 0) {
                        sorter.setRowFilter(RowFilter.regexFilter(setCerca));
                        taBBella.setRowSelectionInterval(0, 0);
                } else {
                        sorter.setRowFilter(null);
                }
         
     }
    CPU: i5 @ 3.0 GHz | Scheda Video: SAPPHIRE ATI HD5670 | Motherboard: ASUS P7P55D | RAM: 4GB Corsair DDR3 | Case: Cooler Master Centurion 534 Lite Nero | HD: WD SATA 500 GB | Monitor: ASUS 22" 22T1E Full HD | OS: Windows 7 Pro. x64

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.