Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    [Java]Passaggio dati da DB a ArrayList

    Ci a tutti,
    vi ripropongo un quesito (ormai sono lanciato)!
    Vorrei inserire i dati del mio DB all'interno di un arraylist presente in una classe Java che adesso vi incollo:

    codice:
    package classi;
    
    import java.sql.*;
    
    public class DAOSelect {
    	public void visualizzaDati() {
    		try {
    			String driver = "com.mysql.jdbc.Driver";
    			Class.forName(driver);
    			String url = "jdbc:mysql://localhost:3306/progetto";
    			Connection con = DriverManager.getConnection(url, "root", "");
    			Statement cmd = con.createStatement();
    
    			String qry = "SELECT * FROM persona";
    
    			ResultSet res = cmd.executeQuery(qry);
    			while (res.next()) {
    
    				System.out.println("ID: " + res.getString("idPersona") + "\t"
    						+ "\t" + " Nome: " + res.getString("nome") + "\t"
    						+ "\t" + " Cognome: " + res.getString("cognome") + "\t"
    						+ "\t" + "Indirizzo: " + res.getString("indirizzo")
    						+ "\t" + "\t" + "Ruolo: " + res.getString("ruolo"));
    
    			}
    			res.close();
    		} catch (SQLException SQLexc) {
    			SQLexc.printStackTrace();
    		} catch (ClassNotFoundException e) {
    			e.printStackTrace();
    		}
    	}
    }
    Così in pratica mi stampa nella console di Eclipse i dati. Funziona tutto. quindi mi servirebbe solo un frammento di codice per l'inserimento in un ArrayList!! Grazie a tutti! intanto ci sbatto ancora la testa un po

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    51
    Prima dovresti creare una classe che contenga quei dati, in questo caso presumo una class User o Persona

    codice:
    
    public class Persona {
        
        private String id;
        
        private String nome;
        private String cognome;
        
        private String indirizzo;
        
        private String ruolo;
    
        public Persona(String id, String nome, String cognome, String indirizzo, String ruolo) {
            this.id = id;
            this.nome = nome;
            this.cognome = cognome;
            this.indirizzo = indirizzo;
            this.ruolo = ruolo;
        }
    
        //I vari metodi getter e setter, toString ecc...
          
    }
    Poi crei una ArrayList<Persona> e inserisci ogni persona recuperando i dati per il costruttore dal ResultSet.

    codice:
    public void visualizzaDati() {
    		try {
    			String driver = "com.mysql.jdbc.Driver";
    			Class.forName(driver);
    			String url = "jdbc:mysql://localhost:3306/progetto";
    			Connection con = DriverManager.getConnection(url, "root", "");
    			Statement cmd = con.createStatement();
    
    			String qry = "SELECT * FROM persona";
    
                            ArrayList<Persona> lista = new ArrayList<Persona>();
    
    			ResultSet res = cmd.executeQuery(qry);
    			while (res.next()) 
                                    lista.add(new Persona(res.getString("idPersona"),
                                                                  res.getString("nome"),
    						              res.getString("cognome"),
    						              res.getString("indirizzo"),
    						              res.getString("ruolo")
                                   );
    
    			res.close();
    		} catch (SQLException SQLexc) {
    			SQLexc.printStackTrace();
    		} catch (ClassNotFoundException e) {
    			e.printStackTrace();
                    }
    }
    Altrimenti se vuoi memorizzare semplicemente le String all'interno di un ArrayList puoi creare una ArrayList che contiene delle ArrayList di String

    codice:
    ArrayList<ArrayList<String>> lista;
    Ma è un modo per complicarsi la vita xD

    Spero di esserti stato d'aiuto (e che il programma giri xD)

  3. #3
    Ok perfetto.
    Si la classe persona l'avevo già fatta con i vari getter e setter e il toString.
    adesso, secondo problema.
    Quell'array, se volessi passarlo ad una servlet (o se mi trovate un qualsiasi modo per eseguire una stampa su pagina html), come devo fare?

    Perchè per ora stampo solo su console Eclipse.
    I'm an heartless man at worst, and an helpless one at best

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    51
    Crea all'interno della classe DAOSelect un metodo static che renda l'ArrayList<Persona> recuperato dal database.
    codice:
    public static ArrayList<Persona> getPersone();
    Poi crei una pagina jsp che invoca il metodo getPersone per recuperare l'ArrayList

    codice:
    <%@page contentType="text/html" pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <title>JSP Page</title>
        </head>
        <body>
            
            <table>  
                <%
                    for(Persona p: DAOSelect.getPersone()) {
                        out.println("<tr>");
                        out.print("<td>" + p.getId() + "</td>");
                        out.print("<td>" + p.getName() + "</td>");
                        out.print("<td>" + p.getSurname() + "</td>");
                        out.println("<td>" + p.getRole() + "</td>");
                        out.println("</tr>");
                    }
                        
                %>
            </table>
            
        </body>
    </html>
    In questo modo visualizza in una tabella i dati recuperati con la chiamata getPersone().

    Poi la formattazione della pagina e la disposizione dei dati sta te

  5. #5
    ok grazie mille!!
    mi sei stato di grande aiuto!!!
    I'm an heartless man at worst, and an helpless one at best

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    51
    Felice di esserti stato di aiuto

  7. #7
    Ops, problemino.
    Ieri ho creato il metodo statico, e ho fatto la pagina.
    però non mi passa i dati. mi sembava tutto giusto dato che non da errori ne eccezioni.
    Il metodo tu come lo scriveresti? che ora non ho eclipse sotto mano per farti vedere se è giusto!
    I'm an heartless man at worst, and an helpless one at best

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    51
    Credo che dovrebbe andar bene in questo modo

    codice:
    public static ArrayList<Persona> getDati() {
    		try {
    			String driver = "com.mysql.jdbc.Driver";
    			Class.forName(driver);
    			String url = "jdbc:mysql://localhost:3306/progetto";
    			Connection con = DriverManager.getConnection(url, "root", "");
    			Statement cmd = con.createStatement();
    
    			String qry = "SELECT * FROM persona";
    
                            ArrayList<Persona> lista = new ArrayList<Persona>();
    
    			ResultSet res = cmd.executeQuery(qry);
    			while (res.next()) 
                                    lista.add(new Persona(res.getString("idPersona"),
                                                                  res.getString("nome"),
    						              res.getString("cognome"),
    						              res.getString("indirizzo"),
    						              res.getString("ruolo")
                                   ));
    
                           con.close();
    			
    		} catch (SQLException SQLexc) {
    			SQLexc.printStackTrace();
    		} catch (ClassNotFoundException e) {
    			e.printStackTrace();
                    } 
    
                    return lista;
    }

  9. #9
    esatto.. dovrebbe essere molto simile! appena posso controllo e ti faccio sapere!!
    I'm an heartless man at worst, and an helpless one at best

  10. #10
    ok, tutto ha funzionato. non so dirti il perchè dato che era identica praticamente. ma ho fatto un copia incolla e modificato il nome delle variabili. ti chiedo ancora una cosa, (o a chiunque legga), sai (o sapete) utilizzare Strutz ver 1.3.x? devo fare un progettino usando quel framework, ma in un mese ho assimilato troppi concetti! adesso sto studiando su una guida trovata qui, molto ben fatta, ma un po troppo generica!
    I'm an heartless man at worst, and an helpless one at best

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.