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"); 
        }
    }
}