|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Apr 2008
Messaggi: 120
|
[JAVA] codice per collegarsi a MySQL
Ciao tutti.
Qualcuno sa qual'è il codice per collegarsi correttamente a un DB MySQL con JAVA e la JDBC??? Io ho visto 3 esempi ma non ne funziona nessuno per un motivo o per un altro! primo pezzo che non funziona in esecuzione: Codice:
import java.sql.*; public class JDBCApp { public static void main (String args[]) { try { // Carichiamo un driver di tipo 1 (bridge jdbc-odbc) String driver = "sun.jdbc.odbc.JdbcOdbcDriver"; Class.forName(driver); // Creiamo la stringa di connessione String url = "jdbc:odbc:myDataSource"; // Otteniamo una connessione con username e password Connection con = DriverManager.getConnection (url, "", ""); // Creiamo un oggetto Statement per poter interrogare il db Statement cmd = con.createStatement (); // Eseguiamo una query e immagazziniamone i risultati // in un oggetto ResultSet String qry = "SELECT * FROM user"; ResultSet res = cmd.executeQuery(qry); // Stampiamone i risultati riga per riga while (res.next()) { System.out.println(res.getString("columnName1")); System.out.println(res.getString("columnName2")); } res.close(); cmd.close(); con.close(); } catch (SQLException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } } } java.lang.ClassNotFoundException: sun.jdbc.odbc.JdbcOdbcDriver 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:319) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294) at java.lang.ClassLoader.loadClass(ClassLoader.java:264) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:332) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:186) at JDBCApp.main(JDBCApp.java:8) secondo pezzo trovato che non funziona: Codice:
import java.sql.*; import java.util.Vector; public class Database { 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 Database(String ....) { this(...., "", ""); } public Database(String ...., String ...., String ....) { this.nomeDB = ; this.nomeUtente = ; 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"); // 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 } Exception in thread "main" java.lang.NoClassDefFoundError: Database Caused by: java.lang.ClassNotFoundException: Database 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:319) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294) at java.lang.ClassLoader.loadClass(ClassLoader.java:264) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:332) Could not find the main class: Database. Program will exit. Infine qui http://www.soulbit.org/blog/come-con...atabase-e-jdbc ho trovato un aiuto ma il codice che c'è li da errori pure in compilazione!!! Ma possibile che sia così complicato? Io uso Ubuntu 9.10 e i file java li compilo ed eseguo da terminale. Se potete aiutarmi ve ne sarò grato! Ultima modifica di postgres : 27-12-2009 alle 18:55. |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Nov 2002
Città: Roma
Messaggi: 1242
|
Per prima cosa: hai installato i driver JDBC per mysql? E nel secondo esempio che hai linkato, dove è il main?
Il driver per mysql lo puoi trovare qui: http://dev.mysql.com/downloads/connector/j/ e le stringhe di connessione vanno configurate così: String driver = "com.mysql.jdbc.Driver"; Class.forName(driver); String url = "jdbc:mysql://localhost:3306/"; Connection con = DriverManager.getConnection (url, "root",""); Nella stringa url puoi anche aggiungere direttamente il nome dal database che vuoi utilizzare alla fine!
__________________
Concertina: "I know the truth is in between the 1st and 40th drink" Ultima modifica di Allure : 27-12-2009 alle 21:54. |
![]() |
![]() |
![]() |
#3 |
Member
Iscritto dal: Apr 2008
Messaggi: 120
|
Si effettivamente mi mancava quello che dicevi tu!
MA ancora non funziona! Nessuno dei due! il primo mi da una sconfinata serie di avvisi/errore di cui il primo è: com.mysql.jdbc.exceptions.jdbc4.communicationsexception. communiactions link failure the last packet sent succesfully to the server was 0 milliseconds ago. the driver has not received any packets from the server. e poi una serie di avvisi il secondo invece mi da un semplice: access denied for user @'localhost' (using password yes) ovviamente tutti i dati sono giusti visto che con php accedo alla base di dati! |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 14:00.