Visualizzazione dei risultati da 1 a 3 su 3

Discussione: [JAVA] consiglio

  1. #1

    [JAVA] consiglio

    Ho fatto una piccola applicazione Java che si connette ad un Database
    Access e mostra i valori (per ora solamente nome e cognome) in un Frame con delle Textbox e 2 bottoni per far scorrere i recors avanti/indietro.
    Tutto sembrerebbe funzionare bene ma mi piacerebbe sapere da voi se
    concettualmente sarebbe stato meglio implementare/strutturare queste 2 classi in maniare differente.
    Ecco il codice:

    Grazie a tutti quelli che mi daranno un consiglio.

    Ciao

    codice:
    import java.awt.*;
     import java.awt.event.*;
     import java.sql.*;
    
    
    class Access extends Frame implements ActionListener {
        TextField t1;
        TextField t2;
        
        public Connessione Conn1;
     
        public Access (Connessione Conn1){
            this.Conn1 = Conn1; 
            setLayout(null);
            setBounds (30, 10, 400, 300);
            setTitle (getClass().getName());
            Button bEsci = new Button("Esci");
            bEsci.setBounds (150, 200, 60, 40);
            bEsci.addActionListener (this);
            Button bAvanti = new Button("Avanti");
            bAvanti.setBounds (50, 120, 60, 40);
            bAvanti.addActionListener (this);
            Button bIndietro = new Button("Indietro");
            bIndietro.setBounds (250, 120, 60, 40);
            bIndietro.addActionListener (this);
            t1 = new TextField();
            t1.setBounds (50, 50, 80, 20);
            t2 = new TextField();
            t2.setBounds (250, 50, 80, 20);
            add (t1);
            add (t2);
            add (bAvanti);
            add (bIndietro);
            add (bEsci);
            setVisible(true);
            Conn1.Avanti(t1, t2);
        
        }
        public void actionPerformed(ActionEvent e) {
            if (e.getActionCommand().equals("Esci")) {
                Conn1.Chiudi(); 
                System.exit(0);
               }
            if (e.getActionCommand().equals("Avanti")) {
                Conn1.Avanti(t1, t2);
               }
            if (e.getActionCommand().equals("Indietro")) {
                Conn1.Indietro(t1, t2);
               }
        }
     }
    
    public class Connessione{
        
        private static Connection con; 
        private static Statement st; 
        private static ResultSet rs; 
        private static String dbURL;
        private int prova;
    
        public static void main(String[] args) {
        
            Connessione Connect = new Connessione();    
            Access ist = new Access(Connect);
        }
    
        Connessione (){ 
            try{ 
                // aggancio il driver  
                Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
            }
            catch(ClassNotFoundException e){ 
                System.out.println("Driver non trovato"); 
                System.exit(0); 
            } 
            try{ 
                // mi connetto al DB soc tramite il ponte dei driver jdbc:odbc < 
                dbURL = "jdbc:odbc:Ark"; 
                con = DriverManager.getConnection(dbURL); 
            }   
            catch(SQLException sql){ 
                System.out.println("Errore connessione"); System.exit(0); 
            } 
            try { 
                // avviso che sto creando una query, uno statement
                st = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
            } 
            catch(SQLException s){ 
                System.out.println("Errore creazione statement"); 
            } 
            try{ 
                // chiedo di eseguire una select  il cui output venga messo // in una result table 
                rs = st.executeQuery("SELECT * FROM Archivio ORDER BY NOME");
            } 
            catch(SQLException esql){ 
                System.out.println("Errore esecuzione statement"); 
            } 
        }
    
        public void Avanti(TextField t1, TextField t2) {  
            try{ 
                // finchè ci sono tuple le prelevo (fetch)
                if (!rs.isLast()) {
                    rs.next(); 
                    t1.setText(rs.getString(1));
                    t2.setText(rs.getString(2));
                    }
            }
            catch(SQLException as){ 
                System.out.println("Errore selezione dati"); 
            } 
    }
    
        public void Indietro(TextField t1, TextField t2) {  
            try{ 
                // finchè ci sono tuple le prelevo (fetch) 
                if (!rs.isFirst()) {
                    rs.previous();
                    t1.setText(rs.getString(1));
                    t2.setText(rs.getString(2));
                }
            }
            catch(SQLException as){ 
                System.out.println("Errore selezione dati"); 
            } 
        }
    
        public void Chiudi() {
            try{ 
                // quando ho finito chiudo prima lo statement 
                // poi la connessione 
                st.close(); 
                con.close(); 
            } 
            catch(SQLException ad){ 
                System.out.println("errore chiusura DB"); 
            }
        }
    }

  2. #2
    up!!!!!!!!!

    Nessuno ha voglia di dare un occhiatina a queste quattro righe di codice.


  3. #3
    E perchè dovrebbero essere implementate diversamente se funzionano?
    None esiste un modo di implementare meglio dell'altro, queste sono scelte del programmatore. Poi se ti riferisci all'efficencia è un altro discorso, ma cmq acquistando esperienza acquisteranno efficenza anche i tuoi programmi.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.