leonwerth

Programmazione
Aiutino codice Java

1 risposta in questa discussione

Salve ragazzi, all'università mi hanno lasciato da fare un programma in java che funziona come una sorta di portale studente. Questo programma inoltre comunica con un server mysql.

vi mostro il codice (ovviamento solo la parte che mostra l'errore) per spiegarvi dove sta il mio problema

########## inizio del codice

    public void query(String q, ArrayList<ArrayList<String>> vs, ArrayList<ArrayList<Integer>> vi, ArrayList<Integer> pi, int allInt)
    throws SQLException {
            
            Connection conn = connect();
        
            Statement stmt = null;

            stmt = conn.createStatement();
            ResultSet rs = stmt.executeQuery(q);
            
            ResultSetMetaData metaData = rs.getMetaData();
            int numfields = metaData.getColumnCount();
            
            /////// start debug
            
            while (rs.next()) {

                for (int i = 1; i <= numfields; i++) {
                    if (i > 1) System.out.print(",  ");
                        String columnValue = rs.getString(i);
                    System.out.print(columnValue);
                }
                System.out.println("");
           
            }
            
            ////// end debug  
            
            while(rs.next()){ //aggiunto per debug. Non dà più le eccezioni ma il login fallisce sempre
            //rs.next();
            System.out.println("hi"); //debug
            for (int i = 0; rs.next(); ++i) {
                // Dovremmo controllare se il primo elemento della riga è null per quando la query non da risultati
                System.out.println("i="+i); //debug
                System.out.println("ciao");
                if (allInt != 0 || pi.size() != 0)
                    vi.add(new ArrayList<Integer>());
    
                if (allInt == 0)
                    vs.add(new ArrayList<String>());
                
                for (int j = 0; j < numfields; ++j){
                    System.out.println(j); //debug
                    if (allInt != 0 || isInt(j, pi) != false)
                        vi.get(i).add(rs.getInt(j));
                    else
                        vs.get(i).add(rs.getString(j));
                }
            }
            }
            
            System.out.println(vs.size()); //debug
            if(rs != null){
                try{
                    rs.close();
                }catch(SQLException e){ }
            }
            
            if(conn != null){
                try{
                    conn.close();
                }catch(SQLException e){ }
            }
        
    }

 

########## fine del codice

La connessione al database funziona. Anche il codice tra i commenti start debug ed end debug funziona (mi stampa i risultati di una query). 

L'unica cosa che non funziona è che dentro il for non vengono allocate le arraylist dentro vs o vi (che sono arraylist di arraylist) e le arraylist interne non vengono riempite con i risultati della query. infatti quando stampo vs.size mi dice 0. se stampo vs.get(0).size mi da un errore.

 

qualcuno potrebbe darmi una mano?

inoltre volevo chiedere un'altra cosa: come vedete la funzione query passa vs e vi, che verranno riempiti dentro questa funzione stessa. tornando al main, vs e vi conservano le nuove modifiche? (purtroppo io sono abituato a programmare in C++ e con i riferimenti era un gioco da ragazzi. qui in java invece si passa solo per copia, quindi temo che le modifiche rimangano locali nella funzione query e quando ritorno nel main si perda tutto)

 

 

EDIT: per essere ancora più precisi, non riesce ad entrare nel ciclo for, infatti per debug ho inserito le 2 righe

System.out.println("i="+i); //debug

System.out.println("ciao");

ma non vengono stampate!

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Crea un account o accedi per lasciare un commento

You need to be a member in order to leave a comment

Crea un account

Iscriviti per un nuovo account nella nostra community. È facile!


Registra un nuovo account

Accedi

Sei già registrato? Accedi qui.


Accedi Ora