PDA

View Full Version : [Java] jdcb e connessione a database mysql


masteryuri
20-05-2012, 17:25
import java.sql.*;

class interaction
{
public static void main(String[] args)
{
Connection conn = null;

try
{
String username = "user";
String password = "password";
String url = "jdbc:mysql://127.0.0.1:3306/nomedb/";

Class.forName("com.mysql.jdbc.Driver").newInstance();
conn = DriverManager.getConnection(url,username,password);
System.out.println("Connection established!");
}

catch (Exception e)
{
System.err.println("Cannot connect to the Database server!");
e.printStackTrace();
}
finally
{
if (conn!=null)
{
try
{
conn.close();
System.out.println("Database connection closed!");
}
catch(Exception e)
{
//ignore class errors
}
}

}
}
}


(La compilazione va a buon fine)
Se provo ad eseguire il precedente codice, java mi risponde


Cannot connect to the Database server!
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:186)
at interaction.main(interaction.java:17)


Qual è il problema? Come posso risolvere?

wingman87
20-05-2012, 19:33
L'hai scaricato il driver JDBC?

http://dev.mysql.com/downloads/connector/j/

masteryuri
21-05-2012, 00:14
Si, ho installato il relativo pacchetto (ambiente Gentoo Linux).
Ad ogni modo ho risolto in questo modo

java interaction -cp /usr/share/jdbc-mysql/lib/jdbc-mysql.jar

Sicuramente sarà possibile evitare questa soluzione ogni volta che devo eseguire, ma come?

PGI-Bis
21-05-2012, 08:47
Aggiungi il jar alle librerie del progetto. Se non usi un IDE, devi aggiungere al manifesto del jar del tuo programma la linea (ad esempio):

Class-Path: librerie/jdbc-mysql.jar

Per la jvm significa che esiste una cartella "librerie" nella directory del jar del tuo programma e dentro a quella cartella esiste il file jdbc-mysql.jar. La distribuzione del tuo programma dovrà quindi rispettare questa convenzione.