Salve a tutti ragazzi, sto impazzendo per un problema, forse stupido.
Ho fatto un'applicazione java che si connette ad un database, recupera i dati e li mostra.
Durante il collegamento, il programma sembra bloccato.
Per risolvere, ho pensato di creare un thread e di utilizzare una progress bar in modo indeterminato, questo il codice:
Il problema è che non ottengo il risultato desiderato, ovvero la progress bar non parte e il programma sembra bloccato.codice:public void visualizzaClienti(final Vector cli) { //VISULIZZA CLIENtI operazione = "cliente"; Runnable visualizza=new Runnable() { public void run() { progressBar.setIndeterminate(true); setTabellaClienti(); DefaultTableModel tb = (DefaultTableModel) libriTable.getModel(); //Vector v; //String q; String q; Vector v; Database.eseguiAggiornamento("LOCK TABLES `Ordini` WRITE, `SpecOrdini` WRITE,`Clienti` WRITE"); if (cli.size() == 0) { q = "SELECT * FROM `Clienti` WHERE `cod_cliente` LIKE '%" + getNegozio() + "%'"; v = Database.eseguiSelectQuery(q); } else { v = cli; } if (v.size() == 0) { JOptionPane.showMessageDialog(mainPanel, "Nessun Cliente presente!", "Attenzione", JOptionPane.WARNING_MESSAGE); } else { for (int i = 0; i < v.size(); i++) { String[] r = (String[]) v.elementAt(i); tb.insertRow(i, r); //controllo quante opere in ordine ha questo cliente //1-se c'è, reucupero dalla tabella ordini l'id_ordine associato al cliente q = "SELECT * FROM `Ordini` WHERE `ID_Cliente` LIKE '" + r[1] + "'"; Vector f = Database.eseguiSelectQuery(q); System.out.println("Utente " + r[1] + " con " + f.size() + " ordini"); if (f.size() == 0) { tb.setValueAt("0", i, 6); } else { //per ogni ordine, recupero da SPECORDINE quelli con stato=0,1,2 int totOrdine = 0; for (int y = 0; y < f.size(); y++) { String[] o = (String[]) f.elementAt(y); q = "SELECT * FROM `SpecOrdini` WHERE `ID_Ordine` LIKE '" + o[1] + "' AND (`Stato` LIKE '" + StatoLibro.IN_ORDINE + "' OR `Stato` LIKE '" + StatoLibro.A_MAGAZZINO + "' OR `Stato` LIKE '" + StatoLibro.DISPONIBILE + "')"; Vector w = Database.eseguiSelectQuery(q); totOrdine += w.size(); System.out.println(" Ordine " + o[1] + " con " + w.size() + " libri"); } tb.setValueAt(totOrdine, i, 6); } } //Elimino la colonna ID, che non mi serve TableColumn tc = libriTable.getColumnModel().getColumn(0); libriTable.removeColumn(tc); Btn_modClienti.setEnabled(false); statusMessageLabel.setText("Trovati " + v.size() + " clienti"); Database.eseguiAggiornamento("UNLOCK TABLES"); progressBar.setIndeterminate(false); } } }; try { SwingUtilities.invokeLater(visualizza); } catch (Exception ex) { System.out.println(ex); } }
Potete aiutarmi???

Rispondi quotando