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

    Inserimento in una JTable

    Ho creato una JTable in cui mettere i dati di una tabella presente nel database.
    Riesco a far visualizzare i nomi delle intestazioni delle colonne a anche a prendere il numero delle righe. Solo che al momento dell'inserimento dei valori nelle celle, succede una cosa strana. Penso di aver scritto una query corretta, nella quale inserire tutti i dati della tabella(utenti) ma al momento della visualizzazione ottengo questo:

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Table model utilizzato??
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Queto il codice del modello della tabella:
    codice:
    class MyTableModel extends AbstractTableModel {
    		
           String[] NomeColonne;	//array con le intestazioni delle colonne
           String [][] Celle;		//matrice con i dati della tabella
    		
            
            public int getRowCount() { 
            	return Celle.length;
            }
            public int getColumnCount() { 
            	return NomeColonne.length;
            }
           
            public Object getValueAt(int r, int c){ 
                System.out.println((String)Celle[r][c]);
        		
                return (String)Celle[r][c];
            }
            
            public String getColumnName(int column){
            	        	
            	return NomeColonne[column];
            }
           
           public MyTableModel(){
        	   super();
        	   int contoDoc;   		//intero per il numero di record della tabella
        	   
        	   try{
                 //Conta il numero dei docenti presenti nella tabella utenti del database
                 contoDoc = frontController.getContaDoc();
        	//Cattura le intestazioni delle colonne
    	NomeColonne = frontController.getListaDoc();
    	//Crea la matrice con i dati
        	Celle = new String [contoDoc][NomeColonne.length];
        	//Inserisce i valori nella tabella
        	frontController.ValoriTabella(Celle, NomeColonne);
        	   
        	   }
    	catch (Exception ex){
    	System.out.println(ex);
    	}
           }
    }

  4. #4
    quando lancio l'applicazionemi escono i dati di un record distribuiti in diagonale, come in figura e inoltre mi da questo errore:
    java.lang.ArrayIndexOutOfBoundsException: 6

    Ho provato a stampare i dati che preleva dalla query e da come si può notare ho tutti null e i soli dati del primo record.
    Credo che l'errore sia nella riga di codice frontController.ValoriTabella
    questo il codice di tale chiamata:
    codice:
    public String[] ValoriTabella(String[][] Celle, String[] NomeColonne) {
    		int contatore = 0;
    		try {
    			String query = "SELECT * FROM utenti;";
    			ResultSet res = database.EseguiQuery(query);
    			
    			while (res.next()){
    				for (int i=0; i< NomeColonne.length; i++){
    					Celle[contatore][i] = res.getString(i+1);
    					contatore++;
    				}
    			}	
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		return NomeColonne;
    	}
    Con database.EseguiQuery(query); pari a:

    codice:
    public ResultSet EseguiQuery(String query) {
            try {
    	AvviaConnessione();     //Apre la connessione al database
    	stato = connessione.createStatement();
    	ResultSet risultato = stato.executeQuery(query);
    	return risultato;
    	} catch (SQLException e) {
    		e.printStackTrace();	
    	}
    	return null;
    }

  5. #5
    Errore demente

    avevo incluso il contatore dentro il ciclo for e non il ciclo while.. :rollo:

    codice:
    public String[] ValoriTabella(String[][] Celle, String[] NomeColonne) {
    		int contatore = 0;
    		try {
    			String query = "SELECT * FROM utenti;";
    			ResultSet res = database.EseguiQuery(query);
    			
    			while (res.next()){
    				for (int i=0; i< NomeColonne.length; i++)
    					Celle[contatore][i] = res.getString(i+1);
    				contatore++;
    			}	
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		return NomeColonne;
    	}

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.