Abdujaparov
03-08-2005, 21:52
Salve a tutti da 3 giorni cerco di capire come far comunicare JAVA con un database mysql ho scaricato le api Connector/J e mi sono messo a leggere un bel pò di guide e manuali però non riesco a far funzionare nulla! aiutatemi vi prego.
Ho implementato i seguenti metodi connetti() e aggiornaInserisci(String), il primo dovrebbe creare una connessione con il database il secondo dovrebbe eseguire la query di inserimento o di aggiornamento passata come stringa, ecco i metodi:
public void connetti(){
try {
Class.forName("com.mysql.jdbc.Driver");
}catch (ClassNotFoundException ex) {System.out.println("errore con Class.forName");}
String con = "jdbc:mysql://" + host +":3306"+"/"+db;
try{
conn = DriverManager.getConnection(con, user,password);
}catch(SQLException ex){System.out.println("errore con la connessione");}
}
public void aggiornaInserisci(String query) {
if(conn!=null){
try{
st = conn.createStatement();
st.executeUpdate(query);
}catch(SQLException e){System.out.println("problema esecuzione query");}
try{
conn.close();
}catch(SQLException ex){System.out.println("problema chiusura connessione");}
}
}
L'errore mi viene dato subito appena richiamo il metodo connetti ed è il seguente (ho tolto altre indicazioni perchè indicavano a cascata le classi che invocavano il metodo):
Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: org/aspectj/lang/Signature
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:164)
at comuni.DBMS.connetti(DBMS.java:48)
Cosa significa? A me sembra corretto non so cosa possa essere sbagliato, su internet avevo anche trovato una classe che fa la stessa cosa però da pure lo stesso errore ed il metodo connetti di quella classe è il seguente:
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;
}
Come posso risolvere? Vi prego ho urgente bisogno d'aiuto, grazie a tutti, ciao ciao.
Ho implementato i seguenti metodi connetti() e aggiornaInserisci(String), il primo dovrebbe creare una connessione con il database il secondo dovrebbe eseguire la query di inserimento o di aggiornamento passata come stringa, ecco i metodi:
public void connetti(){
try {
Class.forName("com.mysql.jdbc.Driver");
}catch (ClassNotFoundException ex) {System.out.println("errore con Class.forName");}
String con = "jdbc:mysql://" + host +":3306"+"/"+db;
try{
conn = DriverManager.getConnection(con, user,password);
}catch(SQLException ex){System.out.println("errore con la connessione");}
}
public void aggiornaInserisci(String query) {
if(conn!=null){
try{
st = conn.createStatement();
st.executeUpdate(query);
}catch(SQLException e){System.out.println("problema esecuzione query");}
try{
conn.close();
}catch(SQLException ex){System.out.println("problema chiusura connessione");}
}
}
L'errore mi viene dato subito appena richiamo il metodo connetti ed è il seguente (ho tolto altre indicazioni perchè indicavano a cascata le classi che invocavano il metodo):
Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: org/aspectj/lang/Signature
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:164)
at comuni.DBMS.connetti(DBMS.java:48)
Cosa significa? A me sembra corretto non so cosa possa essere sbagliato, su internet avevo anche trovato una classe che fa la stessa cosa però da pure lo stesso errore ed il metodo connetti di quella classe è il seguente:
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;
}
Come posso risolvere? Vi prego ho urgente bisogno d'aiuto, grazie a tutti, ciao ciao.