Collegamento a database con jdbc

di luigi83 il
14 risposte
Buongiono sono riuscito a implementare uno script per il collegamento al db di mysql...per la gestione di un negozio di piante..ho mandato in esecuzione dal promt di dos il programma e tutto ok in questo modo:
C://Programmi/Java/jdk1.7.0_40/bin>javac JDBCApp.java
e fin qui tutto bene poi ho scritto:
C://Programmi/Java/jdk1.7.0_40/bin>java JDBCApp
e mi è apparso:
java.sql.SQLException: No suitable driver found for http://localhost/phpmyadmin/
index.php?db=gestione+piante
        at java.sql.DriverManager.getConnection(DriverManager.java:596)
        at java.sql.DriverManager.getConnection(DriverManager.java:215)
        at JDBCApp.main(JDBCApp.java:11)
cosa mi manca per far funzionare ancora il collegamento?
grazie

14 Risposte

  • Se non posti il codice è difficile che ti possano aiutare.
    Come ti ho scritto in precedenza non abbiamo la sfera di cristallo

  • Ecco il 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:gestione piante";
     // Otteniamo una connessione con username e password
     Connection con =
     DriverManager.getConnection ("http://localhost/phpmyadmin/index.php?db=gestione+piante","root","admin");
     // Creiamo un oggetto Statement per interrogare il db
    Statement cmd = con.createStatement ();
    // Eseguiamo una query e immagazziniamone i risultati
    // in un oggetto ResultSet
    String qry = "SELECT * FROM PIANTE";
     ResultSet res = cmd.executeQuery(qry);
    // Stampiamone i risultati riga per riga
     while (res.next()) {
     System.out.println(res.getString("Codice_p")
    );
     System.out.println(res.getString("nome latino")
    );
     }
     res.close();
     cmd.close();
     con.close();
     } catch (SQLException e) {
     e.printStackTrace();
     } catch (ClassNotFoundException e) {
     e.printStackTrace();
     }
     }
    }
    
  • Un minimo di indentazione e sarebbe più semplice anche per te.

    DriverManager.getConnection ("");
    Cosa sarebbe?!?!?

    L'url per un database (immaginando che usi Mysql) è il seguente:
    jdbc:mysql://<host>:<port>/<database_name>
    quindi nel tuo caso:
    jdbc:mysql://localhost:3306/gestione piante
    (non so se con gli spazi funziona, sarebbe meglio fare un nomeDB senza spazi)
    Ovviamente, nel caso il DB è mysql, dò per scontato che hai scaricato il connector e lo hai inserito nel tuo progetto.

    Ciao.
  • Mi da sempre lo stesso errore ... ho scaricato il connector J ed è un file .msi cioè un file microsoft istaller io non sapendo dove metterlo l'ho messo nella cartella bin di java...è giusto?
  • No,per i progetti java dovresti scaricare il Jar e inserirlo come risorsa esterna (nel compilatore).
    Ma tu quale programma usi per scrivere il codice?
  • Io uso il notepad ++ ho scaricato il file jar... denominato: mysql-connector-java-5.1.22-bin l'ho messo nella cartella java\jre7\lib\ext,
    ho aggiunto al classpath l'indirizzo C:\programmi\java\jre7\lib\ext\mysql-connetor-java-5.1.22-bin

    ed ora cosa devo fare?
  • Ma fra l'altro un'altra cosa

    Che centra questo driver con il MySQL
    String driver = "sun.jdbc.odbc.JdbcOdbcDriver";

    semmai è questo qui
    String driver ="com.mysql.jdbc.Driver";

    hai comprato un libro/manuale come ti avevo detto?
    Scrivendo così con copia incolla dai siti non capirai mai nulla.
  • Ciao scusami ma sto seguendo un manuale che ho scaricato in rete... ora provo con la stringa che mi hai detto... vediamo
  • Aggiungendo la stringa che mi hai detto mi esce questo:

    C:\Programmi\Java\jdk1.7.0_40\bin>javac JDBCApp.java
    
    C:\Programmi\Java\jdk1.7.0_40\bin>java JDBCApp
    java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
            at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
            at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
            at java.security.AccessController.doPrivileged(Native Method)
            at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
            at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
            at java.lang.Class.forName0(Native Method)
            at java.lang.Class.forName(Class.java:190)
            at JDBCApp.main(JDBCApp.java:7)
  • Certo non trova il jar...
    a perché non usi un JCreator o un Eclipse(anche se quest'ultimo è un po a più altro livello)

    usa questo
    
    import java.sql.*;
    public class JDBCApp {
    	//il segno di vettore va messo vicino il tipo (String in your case) è più corretto dal punto di vista logico
    	public static void main (String[] args) {
    		try {
    			// Carichiamo il driver (bridge Msql)
    			String driver = "com.mysql.jdbc.Driver";
    			Class.forName(driver);
    			
    			// Creiamo la stringa di connessione
    			//Non sono sicuro se funziona con lo spazio.
    			String url = "jdbc:mysql://localhost:3306/gestione piante";
    			
    			//-- Hai impostato quelle credenziali nel DB?-- 
    			Connection con = DriverManager.getConnection (url,"root","admin");
    			
    			// Creiamo un oggetto Statement per interrogare il db
    			Statement cmd = con.createStatement ();
    			
    			// Eseguiamo una query e immagazziniamone i risultati in un oggetto ResultSet
    			
    			//Se usi il Resultset con i nomi li devi impostare anche nella query 
    			//altrimenti usi il resultset con i numeri
    			//SEMPRE CON QUESTI SPAZI...non sono sicuro sia questa la sintassi (parentesi ``)
    			//per i nomi con spazi, prova la query in un qualunque MySQL Manager. (oppure usa i numeri)
    			String qry = "SELECT Codice_p, `nome latino` FROM PIANTE";
    			
    			ResultSet res = cmd.executeQuery(qry);
    			// Stampiamone i risultati riga per riga
    			
    			while (res.next()) {
    				System.out.println(res.getString("Codice_p"));
    				System.out.println(res.getString("nome latino"));
    				System.out.println();
    			}
    			res.close();
    			cmd.close();
    			con.close();
    		} 
    		catch (SQLException e) {
    			e.printStackTrace();
    		} 
    		catch (ClassNotFoundException e) {
    			e.printStackTrace();
    		}
    	}
    }
    
    e in fase di compilazione devi vederla tu, ma quei programmi detti prima facendo click sul tasto play automaricamente si costruiscono loro la stringa di compilazione
  • Mi da sempre lo stesso errore ... che palle.. devo fare esame il piu presto possibile su java e il manuale che ci ha consigliato il prof si chiama java mattone dopo mattone...il bello e che devo fare da solo senza nessuna spiegzione...uffiiii
  • Scarica il jcreator
    ciao
  • E cosa fa sto j creator?
  • E' un IDE (ambiente di programmazione).
    Lì non hai bisogno di scrivere javac etc etc, di posizionare le librerie esterne xche crea lui il classhpath etc etc...fa tutto lui te solo impostare il progetto e scrivere la classe...
    l'errore che hai te è solo un errore di classpath., quando ho sentito che usavi notepad ++ mi è venuto il magone.

    Ciao
Devi accedere o registrarti per scrivere nel forum
14 risposte