Newsgroup: it.comp.java
Titolo: [ mysql ] perchè non trova i driver?

Salve a tutti,
E' la prima volta che posto su questo newsgroup.
Avrei necessità di interfacciarmi ad un database mysql per recuperare alcuni
dati. Ho scaricato ed installato mysql-connector e copiato il jar in nella
directory lib/ext.
Ecplise mi vede il package.
Perchè allora nell'esempio sotto non riesco a connettermi?
import java.sql.*;
class mySync {
 public static void main(String[] args)
 {
  String DRIVER= "com.mysql.jdbc.Driver";
  String DB_URL="jdbc:mysql://localhost:3306/castelletto";
 
  Connection conn = null;
  try
  {
   Class.forName(DRIVER).newInstance();
   conn = DriverManager.getConnection(DB_URL,"mioutente","miapassword");
   Statement stat = conn.createStatement();
   ResultSet rs = stat.executeQuery("SELECT * FROM TAB_APP_BAN");
 
   while (rs.next())
   {
    System.out.println(rs.getString("Oggetto"));  
   }
 
  } catch (Exception e) {
   System.out.println("Impossibile trovare la libreria per mysql");
  } finally {
   try
   {
    if (conn!=null) conn.close();
   } catch (SQLException e){
    System.out.println("Errore");
   }
  }
 }
}
finisco sempre nel messaggio di errore "impossibile trovare la libreria
mysql". purtroppo data la mia scarsa conoscenza di java non riesco a
trovare il motivo di quel catch: il pacchetto è visto dal sistema :-(
os: linux
java: 1.5 sdk
Grazie a chi mi aiuterà.
-- 
 ~ 
acer...@codeweb.it
 ~ 
http://www.codeweb.it

    System.out.println("Impossibile trovare la libreria per mysql");
Sostituisci con:
      e.printStackTrace();
Lì catturi tutte le eccezioni e mascheri l'output con un messaggio 
generico, come fai a sapere se l'errore è quello invece di un'altro?

 trovare il motivo di quel catch: il pacchetto è visto dal sistema :-(
Tanto per provare, metti il .jar del mysql nella stessa cartella dei
sorgenti e vedi se compila.
-- 
Ciao,
 Fabrizio
=== 
http://www.negusweb.it
 ===

Vincent Vega wrote:

fatto.
a questo punto mi restituisce una serie di errori.
tra le prime righe trovo:
<snip>
acerutti@awaken:~/eclipse/workspace/mySync$ java mySync
com.mysql.jdbc.CommunicationsException: Communications link failure due to
underlying exception:
** BEGIN NESTED EXCEPTION **
java.net.SocketException
MESSAGE: java.net.ConnectException: Connection refused
</snip>
mentre andando oltre trovo indicata la riga del mio codice incolpata:
<snip>
at mySync.main(mySync.java:37)
</snip>
e cioè:
conn = DriverManager.getConnection(DB_URL,"mioutente","miapassword");
googolando ho provato a passare:
- solo DB_URL
- DB_URL?user=mioutente?password=miapassword
- DBURL, myProp
 myProp.setProperty("user",mioutente");
 myProp.setProperty("password","miapassword");
ma non ne sono venuto a capo.
Ho trovato chi dice di toccare my.cnf e commentare skip-networking e chi
dice di toccare /etc/hosts nel caso sia indicato qualche indirizzo ipv6.
non so proprio cosa fare.
se da console faccio:
$ mysql -u mioutente castelletto -p
entro.
Suggerimenti su dove andare a parare? Grazie ancora.


 
ciao,
ho provato la tua soluzione ma non ho risolto.
seguendo la strada di Vincent Vega ho scoperto che non riesco a collegarmi
ma non ho capito come riuscirci :-(


 
risolto!
ho verificato che:
- la connessione la devo fare con localhost.localdomain dato che
in /etc/hosts è indicata così
- in my.cnf devo commentare skip-networking
- devo creare un utente localhost.localdomain per mysql e non usare quelli
già pronti (questo perchè non cambio il nome in /etc/hosts)
Grazie ancora per l'aiuto di entrambi


 - in my.cnf devo commentare skip-networking
Se la macchina e' attaccata direttamente ad Internet, fai in modo di
proteggere l'accesso a MySQL. Per esempio con "bind-address = 127.0.0.1".
-- 
Giambo - Occhio al filtro antispam _e_ alla whitelist !

 ma non ho capito come riuscirci :-(
Normalmente con quei parametri riesci ad accedere a mysql, tramite il suo
client ?


 proteggere l'accesso a MySQL. Per esempio con "bind-address = 127.0.0.1".
 
ok grazie! per il suggerimento :-)
