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

Rispondi quotando