Tempo fa ho provato a costruire un oggetto Connessione, specifico
per Database Access, per il porting di applicazioni VB60 in Java.
Ho scelto questo approccio, perchè, una volta creato, questo oggetto
è riutilizzabile tutte le volte che devi accedere ad un MDB.
Tieni presente che per funzionare devi avere un DSN che individua
il file .mdb.
Ti posto la classe di Connessione e il modo semplice per utilizzarla.
codice:
/*
* Connessione.java
*
* Created on 22 luglio 2004, 21.33
*/
import java.io.*;
import java.lang.*;
import java.sql.*;
import java.util.*;
import java.text.*;
import java.net.URL;
/**
*
* @author Brainjar
*/
public class Connessione {
/** Creates a new instance of Connessione */
public Connessione() {
} // Connessione
public void apriConnessione(String sorgente) {
try {
Class.forName(class_driver);
} catch (Exception e) { e.printStackTrace();}
try {
DBConnection = null;
DBConnection = DriverManager.getConnection(url_connect + sorgente);
SQLStatement = DBConnection.createStatement();
} catch (Exception ex) { ex.printStackTrace();}
} // apriConnessione
public ArrayList eseguiQuery(String q) {
try {
rsQuery = SQLStatement.executeQuery(q);
rsmd = rsQuery.getMetaData();
} catch (Exception ex) { ex.printStackTrace();}
ArrayList recordset = new ArrayList();
ArrayList record;
String rsField;
try {
int nCols = rsmd.getColumnCount();
while (rsQuery.next()) {
record = new ArrayList();
for (int ctCol = 0; ctCol < nCols; ctCol++) {
rsField = rsQuery.getString(ctCol + 1);
record.add(record.size() , rsField);
}
recordset.add(recordset.size(), record);
}
} catch (Exception ex) { ex.printStackTrace();}
return recordset;
} // eseguiQuery
public static String class_driver = "sun.jdbc.odbc.JdbcOdbcDriver";
public static String url_connect = "jdbc:odbc:";
public static Connection DBConnection;
public static ResultSetMetaData rsmd;
public static Statement SQLStatement;
public static ResultSet rsQuery;
public static String str;
}
// per utilizzarla :
// 1) La classe Connessione la tieni nella stessa directory del
// tuo progetto
// 2) Oppure fai una immport
// 3) Oppure fai un jar.
// All'inizio ti conviene sicuramente il sistema 1)
// Nella classe che utilizzi per accedere ai dati :
Connessione connessione = new Connessione();
ArrayList lista; // <--- Il Recordset
ArrayList listaCampi; // <--- L'insieme dei campi
connessione.apriConnessione("NOME_DSN");
lista = connessione.eseguiQuery("SELECT ......");
// Per puro esempio.
// Scorre i records uno per uno .....
for (int i=0; i<lista.size(); i++) {
listaCampi = (ArrayList)lista.get(i);
// Scorre la listaCampi uno per uno .....
for (int j=0; j<lista.size(); j++) {
String campo = (String)listaCampi.get(j);
}
}
Ciao,