Collegamento a database con jdbc

di il
14 risposte

Collegamento a database con jdbc

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

  • Re: Collegamento a database con jdbc

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

  • Re: Collegamento a database con jdbc

    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();
     }
     }
    }
    
  • Re: Collegamento a database con jdbc

    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.
  • Re: Collegamento a database con jdbc

    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?
  • Re: Collegamento a database con jdbc

    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?
  • Re: Collegamento a database con jdbc

    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?
  • Re: Collegamento a database con jdbc

    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.
  • Re: Collegamento a database con jdbc

    Ciao scusami ma sto seguendo un manuale che ho scaricato in rete... ora provo con la stringa che mi hai detto... vediamo
  • Re: Collegamento a database con jdbc

    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)
  • Re: Collegamento a database con jdbc

    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
  • Re: Collegamento a database con jdbc

    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
  • Re: Collegamento a database con jdbc

    Scarica il jcreator
    ciao
  • Re: Collegamento a database con jdbc

    E cosa fa sto j creator?
  • Re: Collegamento a database con jdbc

    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