Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 29

Hybrid View

  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    102

    java.sql.SQLException: No suitable driver found for jdbc - IMPOSSIBILE DA RISOLVERE

    Ciao ragazzi! Mi sono imbattuto in questo problema, dove voglio semplicemente acquisire dei valori da un database prova di MySQL. Cercando in internet quest'errore, trovo 2 vie generiche:

    1) Bisogna scrivere un metodo che carichi i driver manualmente prima di effettuare le richieste, ovvero:
    Class.forName("com.mysql.jdbc.Driver");
    2) Configurare la variabile CLASSPATH con il jar del Connector/J: ci ho provato, ma oltre che non esisteva la CLASSPATH, creandola e mettendogli il path del Connector/J non mi faceva più partire nessuna classe in generale!

    Adesso, voglio dire che ho formattato il pc, e prima tutto funzionava correttamente né effettuando l'opzione 1, né l'opzione 2, ma semplicemente seguendo questa guida dall'inizio alla fine:

    http://docs.oracle.com/javase/tutori...ngstarted.html

    E inoltre la guida con i tutorial example funzionano, ma il mio programma a parte no... allego qui il codice:

    codice:
    import java.sql.*;
    
    class DBProva{
    
    
        public static void main (String[] args){
            PreparedStatement state = null;
            Connection conn = null;
            try {
                conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/sakila", "root", "root");    
                System.out.println("Connessione riuscita, database: "+conn.getCatalog());
                
                state = conn.prepareStatement("SELECT * FROM film");                                        
                ResultSet result = state.executeQuery();                                                    
                while (result.next()) System.out.println("Nomi film: " + result.getString("title"));
                state.close();                                                                        
                state.close();
                conn.close();
    
    
            }
            catch (SQLException e){
                e.printStackTrace();
            }
        }
    }
    Qualcuno mi spiega cosa diamine succede? Perché sto impazzendo :\ grazie...

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da valerio65 Visualizza il messaggio
    1) Bisogna scrivere un metodo che carichi i driver manualmente prima di effettuare le richieste, ovvero:
    Class.forName("com.mysql.jdbc.Driver");
    Vero in generale. Ma se usi almeno Java SE 6 e il driver JDBC rispetta le specifiche JDBC 4.0 (e per il driver MySQL è così già da un po'), questo passo non è più strettamente necessario.

    Quote Originariamente inviata da valerio65 Visualizza il messaggio
    2) Configurare la variabile CLASSPATH con il jar del Connector/J: ci ho provato, ma oltre che non esisteva la CLASSPATH, creandola e mettendogli il path del Connector/J non mi faceva più partire nessuna classe in generale!
    Il classpath come concetto è semplicemente un elenco di directory/file jar che la JVM usa per rintracciare le classi. Ovviamente in classpath devi certamente mettere il jar del driver JDBC MySQL ma anche il jar (o la directory, se sono classi "sfuse") delle tue classi.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    102
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Vero in generale. Ma se usi almeno Java SE 6 e il driver JDBC rispetta le specifiche JDBC 4.0 (e per il driver MySQL è così già da un po'), questo passo non è più strettamente necessario.


    Il classpath come concetto è semplicemente un elenco di directory/file jar che la JVM usa per rintracciare le classi. Ovviamente in classpath devi certamente mettere il jar del driver JDBC MySQL ma anche il jar (o la directory, se sono classi "sfuse") delle tue classi.
    Ho provato ad eseguire il punto 2 con classpath come dicevi tu (e per sicurezza ho anche provato l'1) ma niente...

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da valerio65 Visualizza il messaggio
    Ho provato ad eseguire il punto 2 con classpath come dicevi tu (e per sicurezza ho anche provato l'1) ma niente...
    (es. per Windows)

    set CLASSPATH=blabla\mysql-connector-java-X.Y.Z-bin.jar;directoryTueClassi

    dove directoryTueClassi può certamente essere un path assoluto ma spesso se si avvia da prompt dei comandi e si sta come directory corrente proprio in quella directory, basta un punto "." ovvero appunto directory corrente.

    Poi comunque bisogna anche vedere se le tue classi sono in un package specifico o in quello di default.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    102
    Quote Originariamente inviata da andbin Visualizza il messaggio
    (es. per Windows)

    set CLASSPATH=blabla\mysql-connector-java-X.Y.Z-bin.jar;directoryTueClassi

    dove directoryTueClassi può certamente essere un path assoluto ma spesso se si avvia da prompt dei comandi e si sta come directory corrente proprio in quella directory, basta un punto "." ovvero appunto directory corrente.

    Poi comunque bisogna anche vedere se le tue classi sono in un package specifico o in quello di default.
    l'unica classe che uso è quella che ho allegato come codice, ho provato a fare come dici tu ma non funziona. Dando il . dopo il ; non funziona e mi dice couldn't find or load class DBProva

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da valerio65 Visualizza il messaggio
    l'unica classe che uso è quella che ho allegato come codice, ho provato a fare come dici tu ma non funziona. Dando il . dopo il ; non funziona e mi dice couldn't find or load class DBProva
    Deduco quindi che DBProva sia nel package di default. Ok. Supponiamo che DBProva.class (il compilato dal .java) sia in C:\Prove e il driver JDBC sia in C:\Librerie

    Quindi

    set CLASSPATH=C:\Librerie\mysql-connector-java-X.Y.Z-bin.jar;C:\Prove

    (ovviamente cambia i path che qui sono solo di esempio)

    poi

    java DBProva
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Beh, ma in CLASSPATH: C:\Program Files (x86)\MySQL\Connector.J 5.1; degli spazi ci sono...
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    102
    Quote Originariamente inviata da Alex'87 Visualizza il messaggio
    Beh, ma in CLASSPATH: C:\Program Files (x86)\MySQL\Connector.J 5.1; degli spazi ci sono...
    Si ma appunto ho messo il driver jar nella cartella C:\prove per evitare di avere un path con spazi...

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    102
    Ragazzi nessuno quindi sa darmi una mano a riguardo?

  10. #10
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    si ma se lasci il classpath con quel path li (o con spazi) il problema c'è sempre
    RTFM Read That F*** Manual!!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.