Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    726

    [JAVA] Non vengono visualizzati i record

    codice:
     while (rs.next())
    	 { 
          k = 0;
          
           valCella[i][k] = rs.getString(0);
           k++;
           valCella[i][k] = rs.getString(1);
           k++;
           valCella[i][k] = rs.getInt(2);
           i++;
         }
    rs è un oggetto ResultSet
    valCella è un array bidimensionale di tipo Object
    k e i sono dei contatori

    L'interrogazione va a buon fine, nel senso che vengono creati nella tabella un numero di righe corrispondente a quello dei record presenti, ma non visualizza il contenuto delle celle.

    Sto seguendo degli esempi presi da internet, ma non capisco perchè non funga, o meglio funga a metà.

    Che faccio?

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    lì stai solo facendo assegnazioni... prova ad aggiungere un System.out.println(...) per vedere che cosa recuperi e se effettivamente il tuo array bidimensionale venga valorizzato.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    726
    Adesso lo faccio.

    In quel pezzo di codice assegno solo, poi tutto l'array bidimensionale viene passato al costruttore di JTable.

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    726
    Non stampa nulla, ma non dico il contenuto delle tabelle, ma proprio quello che vado ad inserire di mio nelle system.out

    Posto tutto il codice relativo a questa parte:

    codice:
    public class VisualizzaDBCliente extends JPanel
    {
     public JTable tabellaCliente;
     public Object[] nomeColonna = {"Nome","Cognome","Eta"};
     public Object[][] valCella;
     public JScrollPane scroll;
     public int i = 0;
     public int k;
     public String query;
    
    public VisualizzaDBCliente()
      {
       setLayout(new BorderLayout());
       
       
        ottieniRecord();
             
        tabellaCliente = new JTable(valCella,nomeColonna);
        add(tabellaCliente);
      
       scroll = new JScrollPane();
        scroll.getViewport().add(tabellaCliente);
        add(scroll);
        
       add(BorderLayout.CENTER,tabellaCliente);
    
       setVisible(true);
     }
    
    public void ottieniRecord()
      {
       try
       {
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        Connection conn = DriverManager.getConnection("jdbc:odbc:db_progetto");
        Statement st = conn.createStatement();
      
         query = ("SELECT * FROM utente");
         
         
         
         ResultSet rs;
          rs = st.executeQuery(query); 
              
    	 while (rs.next())
    	 {
    	  i++;
    	 }
    	 
    	 valCella = new Object[i][3];
    	 i = 0;
    	           
    	 
    	 while (rs.next())
    	 { 
          k = 0;
          
        
           valCella[i][k] = rs.getString(0);
           System.out.println("Nome:" + rs.getString(0));
           k++;
           valCella[i][k] = rs.getString(1);
           k++;
            System.out.println("Cognome:" + rs.getString(1));
           valCella[i][k] = rs.getInt(2);
            System.out.println("Anni:" + rs.getInt(2));
           i++;
         }
         
       } 
       catch (ClassNotFoundException e)
       {
        System.out.println("Errore di tipo ClassNotFound");
        e.printStackTrace();
       }  
       catch (SQLException e)
       {
        System.out.println("Errore di tipo SQL");
        e.printStackTrace();
       }
      }
    
    }

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    per forza, ti fumi tutto il recordset con quella genialata:

    codice:
    while (rs.ext()) {
      i++;
    }
    Quando esce da lì, il recordset è bello che finito e il prossimo rs.next lo salta in tronco perché è già alla fine. Prova a riavvolgere il rs
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    726
    Scusa??

    Perdona la mia ignoranza, ma questo argomento è quasi del tutto sconosciuto, ho solo le basi minime minime.

    Quindi nel primo while io non ho fatto altro che andare spulciare tutti i record, poi nel secondo while è come se fossi partito dalla fine, giusto?

  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    sì.
    Praticamente, quel next sposta il "cursore" alla riga successiva del recordset... e quando è arrivato alla fine, next ritorna un false.

    Se il recordset lo consente (dipende dal tipo di database, con mysql non dovresti avere problemi), puoi "riavvolgerlo" dopo quel ciclo while con rs.beforeFirst();
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  8. #8
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    726
    Si, ho usato quel metodo, ma siccome devo usare un DB SQL (Access 2000) mi ritorna dietro una eccezione:

    Result Set type is TYPE_FORWARD_ONLY

  9. #9
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    comunque non mi è chiaro a che ti serva quel primo while (edit: anzi no... è per creare l'array della giusta misura)... se è per contare i record, fai una SELECT COUNT... oppure usa un Vector in cui pushi le righe intere che estrai: così non ti devi nemmeno preoccupare della lunghezza del recordset.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  10. #10
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    726
    Dunque, i Vector non so cosa siano.

    Ma invece per l'istruzione SQL??

    Ciuoè io faccio:
    ResultSet rs;
    rs = st.executeQuery(SELECT COUNT(*) FROM utente);

    Ma poi devo trasformare l'oggetto rs in un intero, un cast non credo funzioni.

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.