Salve a tutti, devo connettere un database access con java, sto usando la pillola contenuta in questo forum, uso la tipologia del driver JDBC descritta all'interno della pillola, ma non riesco a farla girare, devo aver commesso alcuni errori. Il codice scritto da me è:
codice:
import java.sql.*;
import java.util.Vector;

public class Database {
	private String nomeDB;       // Nome del Database a cui connettersi
	private String nomeUtente;   // Nome utente utilizzato per la connessione al Database
	private String pwdUtente;    // Password usata per la connessione al Database
	private String errore;       // Raccoglie informazioni riguardo l'ultima eccezione sollevata
	private Connection db;       // La connessione col Database
	private boolean connesso;    // Flag che indica se la connessione è attiva o meno

	public Database(String nomeDB) {
		this(nomeDB, "", "");
	}// costruttore per l'accesso anonimo

	public Database(String nomeDB, String nomeUtente, String pwdUtente) {
		this.nomeDB = nomeDB;
		this.nomeUtente = nomeUtente;
		this.pwdUtente = pwdUtente;
		connesso = false;
		errore = "";
	}// costruttore per l'accesso autenticato

   // Apre la connessione con il Database
	public boolean connetti() {
		connesso = false;
		try {
			// Carico il driver JDBC per la connessione con il database MySQL
			Class.forName("com.mysql.jdbc.Driver");
			// Controllo che il nome del Database non sia nulla
			if (!nomeDB.equals("")) {
				// Controllo se il nome utente va usato o meno per la connessione
				if (nomeUtente.equals("")) {
					// La connessione non richiede nome utente e password
					db = DriverManager.getConnection("jdbc:mysql://localhost/" + nomeDB);
				} 
				else {
					// La connessione richiede nome utente, controllo se necessita anche della password
					if (pwdUtente.equals("")) {
						// La connessione non necessita di password
						db = DriverManager.getConnection("jdbc:mysql://localhost/" + nomeDB + "?user=" + nomeUtente);
					} 
					else {
						// La connessione necessita della password
						db = DriverManager.getConnection("jdbc:mysql://localhost/" + nomeDB + "?user=" + nomeUtente + "&password=" + pwdUtente);
					}
				}
				// La connessione è avvenuta con successo
				connesso = true;
			} 
			else {
				System.out.println("Manca il nome del database!!");
				System.out.println("Scrivere il nome del database da utilizzare all'interno del file \"config.xml\"");
				System.exit(0);
			}
		} 
		catch (Exception e) { 
			errore = e.getMessage(); 
		}
		return connesso;
	}
	
	// Esegue una query di selezione dati sul Database
	// query: una stringa che rappresenta un'istruzione SQL di tipo SELECT da eseguire
	// colonne: il numero di colonne di cui sarà composta la tupla del risultato
	// ritorna un Vector contenente tutte le tuple del risultato
	public Vector eseguiQuery(String query) {
		Vector v = null;
		String [] record;
		int colonne = 0;
		try {
			Statement stmt = db.createStatement();// Creo lo Statement per l'esecuzione della query
			ResultSet rs = stmt.executeQuery(query);// Ottengo il ResultSet dell'esecuzione della query
			v = new Vector();
			ResultSetMetaData rsmd = rs.getMetaData();
			colonne = rsmd.getColumnCount();
			while(rs.next()) {   // Creo il vettore risultato scorrendo tutto il ResultSet
				record = new String[colonne];
				for (int i=0; i<colonne; i++) record[i] = rs.getString(i+1);
				v.add( (String[]) record.clone() );
			}
			rs.close();     // Chiudo il ResultSet
			stmt.close();   // Chiudo lo Statement
		} 
		catch (Exception e) { 
			e.printStackTrace(); errore = e.getMessage();
		}
		return v;
	}

	// Esegue una query di aggiornamento sul Database
	// query: una stringa che rappresenta un'istuzione SQL di tipo UPDATE da eseguire
	// ritorna TRUE se l'esecuzione è adata a buon fine, FALSE se c'è stata un'eccezione
	public boolean eseguiAggiornamento(String query) {
		int numero = 0;
		boolean risultato = false;
		try {
			Statement stmt = db.createStatement();
			numero = stmt.executeUpdate(query);
			risultato = true;
			stmt.close();
		} 
		catch (Exception e) {
			e.printStackTrace();
			errore = e.getMessage();
			risultato = false;
		}
		return risultato;
	}

	// Chiude la connessione con il Database
	public void disconnetti() {
		try {
			db.close();
			connesso = false;
		} 
		catch (Exception e) { 
			e.printStackTrace(); 
		}
	}

	public boolean isConnesso() { 
		return connesso; 
	}// Ritorna TRUE se la connessione con il Database è attiva
	
	public String getErrore() { 
		return errore; 
	}// Ritorna il messaggio d'errore dell'ultima eccezione sollevata
il metodo scritto per verificarlo è:
codice:
public static void main(String[] args) {
		
		Database db = new Database("EstrattorePDF.mdb");
		if ( !db.connetti() ) {
			System.out.println("Errore durante la connessione.");
			System.out.println( db.getErrore() );
			System.exit(0);
		}
		// Eseguo una query sul database. La tabella si chiama Tbl.
		Vector v = db.eseguiQuery( "SELECT * FROM Tbl;" );
		// Stampiamo i risultati:
		int i = 0;
		while ( i<v.size() ) {
			String[] record = (String[]) v.elementAt(i);
			System.out.println("Record numero " + (i+1) );
			for (int j=0; j<record.length; j++) {
				System.out.println( record[j] );
			}
		}
		// Eseguo un aggiornamento sul campo 'nomecampo' della tabella Tbl:
		if ( !db.eseguiAggiornamento("UPDATE Tbl SET nomecampo=valore WHERE nomecampo>0;") ) {
			System.out.println("Errore nell'aggiornamento!");
			System.out.println( db.getErrore() );
		}
		// Ora chiudo la connessione col Database:
		db.disconnetti();
	}
che stampa:
Errore durante la connessione.
com.mysql.jdbc.Driver

non so di preciso dove ho sbagliato, io penso si dovuto al fatto che ho caricato male il Connector-j. Come faccio per farla funzionare? dove sbaglio?