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 è:
il metodo scritto per verificarlo è: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
che stampa: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(); }
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?

Rispondi quotando