Supponiamo che il nome del db sia NOMINATIVODB (che contiene NOMINATIVOTABELLA, e l'username sia root e non ci sia la pwd.
il main sarebbe corretto così:
i
codice:
import java.sql.*; import java.util.Vector; public class Main{ public static void main(String[] args){ Database db = new Database("NOMINATIVODB","root",""); 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 NOMINATIVOTABELLA;" ); 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] ); } } // Ora chiudo la connessione col Database: db.disconnetti(); } }
e la classe Database così:
codice:
import java.sql.*; import java.util.Vector; public class Database { private String nomeDB; private String nomeUtente; private String pwdUtente; private String errore; private Connection db; private boolean connesso; public Database(String nomeDB) { this(nomeDB, "", ""); } public Database(String nomeDB, String nomeUtente, String pwdUtente) { this.nomeDB = "NOMINATIVODB"; this.nomeUtente = "root"; this.pwdUtente = ""; connesso = false; errore = ""; } // 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").newInstance(); // Controllo che il nome del Database non sia nulla if (!nomeDB.equals("")) { try{ // La connessione necessita della password db = DriverManager.getConnection("jdbc:mysql://localhost/" + "NOMINATIVODB" + "?user=" + "root" + "&password=" + ""); }catch(SQLException ex){ System.out.println("SQLException: " + ex.getMessage()); System.out.println("SQLState: " + ex.getSQLState()); System.out.println("VendorError: " + ex.getErrorCode()); } // 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
Grazie