PDA

Visualizza la versione completa : [JAVA] consiglio


anatroccolo
04-10-2004, 10:24
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



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

anatroccolo
04-10-2004, 15:35
up!!!!!!!!!

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

:cry:

Salvatore85
05-10-2004, 00:45
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.

Loading