Grazie unomichisiada hai in parte capito il problema, all'uni il prof non mi ha spiegato nulla di mysql e con quello che ho trovato e letto per informarmi non ho capito perfettamente il funzionamento.
Questo è il codice della classe che effettua la connessione al driver jdbc e al database
codice:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
import java.util.Vector;
public class Database1 {
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 Database1(String nomeDB) {
this(nomeDB, "", "");
}
public Database1(String nomeDB, String nomeUtente, String pwdUtente) {
this.nomeDB = nomeDB;
this.nomeUtente = nomeUtente;
this.pwdUtente = 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");
// 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
mentre questa è la classe contenente il main
codice:
import java.util.Vector;
public class Database1Main {
public static void main(String[] args) {
Database1 db = new Database1("Pod","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 Tbl;");
// Stampiamo i risultati:
int i = 0;
while (i < v.size()) {
System.out.println("Record numero " + (i + 1));
String[] record = (String[]) v.elementAt(i++);
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();
}
}