Java.sql.SQLException: No suitable driver found for jdbc:derby://localhost

di il
6 risposte

Java.sql.SQLException: No suitable driver found for jdbc:derby://localhost

Salve a tutti,

Ho pensato di scrivere in Java con IDE Netbeans 8.2 un programmino per facilitare il lavoro del mio team aziendale.
In soldoni devo inserire dei dati in un database per poi andarli a consultare all'occorrenza.

Il programma si avvia senza alcun problema ma quando vado a salvare i dati inseriti mi imbatto nel seguente errore:



Questa è la parte di codice interessata:
package tme.bt;

import java.sql.*;
import javax.swing.*;

public class NewBT extends javax.swing.JFrame {

    public NewBT() {
        initComponents();
    }

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        
        try{
            String url = "jdbc:derby://localhost:1527/BT DB";
            String username = "admin1";
            String password = "admin";
            
            Connection con = DriverManager.getConnection(url, username, password);
            Statement stmt = con.createStatement();
            
            String Query = "Insert into BugTracing (Operator, MdC, Fixture, Bug, Solution) VALUES ('"+OpText.getText()+"' , '"+MdCText.getText()+"' , '"+FixText.getText()+"' , '"+BugText.getText()+"' , '"+SolText.getText()+"')";
        
            stmt.execute(Query);
            
            JOptionPane.showMessageDialog(null, "Successfully Saved!");
            
            
        
        }catch(SQLException ex){
            
            JOptionPane.showMessageDialog(null, ex.toString());
        
        }
        
    }  
Ho fatto diverse ricerche sul web per questa tipologia di errore e provato una buona quantità di soluzioni proposte ma il problema persiste.
Vi ringrazio anticipatamente per un eventuale aiuto.
Buona Serata

6 Risposte

  • Re: Java.sql.SQLException: No suitable driver found for jdbc:derby://localhost

    Non hai messo il driver per JavaDB nel classpath.
    Se è un progetto ANT (il default per NetBeans) devi aggiungere il driver all'elenco delle librerie.
    Se è un progetto Maven devi aggiungere la dipendenza nel POM.

    Inoltre, dalla stringa di collegamento che stai usando, il DB deve trovarsi (o verrà creato) in locale dove risiede il programma... sei sicuro di questo? Hai parlato di "team aziendale"... se ci sono più persone che devono lavorare allo stesso DB questo dovebbe essere in rete (su un server) non certo in locale (a meno che quello che stai progettando non sia la parte server di una applicazione più ampia... in questo caso potrebbe essere corretto così).
  • Re: Java.sql.SQLException: No suitable driver found for jdbc:derby://localhost

    Non hai messo il driver per JavaDB nel classpath.
    Se è un progetto ANT (il default per NetBeans) devi aggiungere il driver all'elenco delle librerie.
    I driver nella libreria (se sono quelli giusti):



    E nel classpath del progetto:



    Grazie Mille per la risposta.
  • Re: Java.sql.SQLException: No suitable driver found for jdbc:derby://localhost

    Il manifest viene automaticamente generato da NetBeans (da ANT).
    Verifica di avere attivato la spunta "Copy Dependent Libraries" nella scheda "Packaging" delle proprietà del progetto (Menu File -> Project properties / Nell'albero a sinistra seleziona "Packaging" che si trova nel ramo "Build" e verifica che ci sia la spunta in "Copy Dependent Libraries").

    Attenzione: quando compili, trovi il jar dentro la directory "dist" del progetto... al suo interno c'è anche la directory "lib" con le librerie. Quando "distribuisci" l'applicazione devi portarti via anche la directory "lib", non solamente il JAR e tale directory deve stare nella stessa cartella in cui si trova il JAR.
  • Re: Java.sql.SQLException: No suitable driver found for jdbc:derby://localhost

    Io non ho ancora finito di compilare il progetto, ne ho compilato solo una parte. Quando vado a testare questa parte mi viene fuori l'errore in oggetto, quindi sono fermo.

    Il pacchetto driver .jar copiato nelle librerie e nel classpath del progetto è quello giusto ?
  • Re: Java.sql.SQLException: No suitable driver found for jdbc:derby://localhost

    GiBear ha scritto:


    Io non ho ancora finito di compilare il progetto, ne ho compilato solo una parte. Quando vado a testare questa parte mi viene fuori l'errore in oggetto, quindi sono fermo.
    Capiamoci: un progetto o compila tutto (tutti i sorgenti scritti fino a quel momento) o non compila nulla (la compilazione non va a buon fine). Cosa intendi quando dici "per testare questa parte"? Mandi in esecuzione il progetto usando il pulsante "play" di NetBeans? In questo caso, quel che accade è
    1) Net Beans compila il progetto.
    2) Si posiziona nella directory di build
    3) Esegue la classe principale
    Il pacchetto driver .jar copiato nelle librerie e nel classpath del progetto è quello giusto ?
    Questo lo puoi sapere solo tu (ci sono diverse versioni del driver, dall'immagine leggo solo "derbyclient-10.1" (in rete trovo i jar con anche le minor versions specificate).

    Resta da capire se il driver che stai usando è conforme alle specifiche JDBC4, ovvero se il driver è auto-loadable. Se così non fosse (non ho modo ora di verificarlo) dovrai preoccuparti di caricarlo tu esplicitamente a mano (come si faceva prima della specifica JDBC 4 usando Class.forName)

    Se il driver non è conforme alle specifiche JDBC4 dovrai caricarlo a mano e qui entra in gioco la scelta del driver; JavaDB supporta due tipi di connessione al DB: il tipo "embedded" e il tipo "client-server". A seconda di quale dei due tipi di connessione vuoi, dovrai caricare il driver corretto (e dovrai anche preoccuparti, nel caso del "client-server", che vi sia un'istanza del server JavaDB attiva sulla tua macchina).

    Edit: ho appena verificato, che la versione 10.1 del driver non è JDBC4 compliant ed il driver va obbligatoriamente caricato a mano. Qui un po' di info a riguardo: https://db.apache.org/derby/docs/10.1/devguide/cdevdvlp40653.html
    In alternativa potresti pensare di passare alla versione 10.4 del driver, che è JDBC4 compliant, così non hai più il problema.
  • Re: Java.sql.SQLException: No suitable driver found for jdbc:derby://localhost

    SpiritoLibero ho appena risolto dopo diversi giorni a sbatterci la testa

    Erano semplicemente sbagliati i driver che caricavo nella libreria del progetto e quindi nel classpath.
    Quelli giusti erano questi:



    Me ne sono accorto leggendo questo:



    Una volta scaricati i driver giusti per il Server di Rete Apache Derby tutto funziona perfettamente.

    Ti Ringrazio per la pazienza e il supporto.

    Buona Giornata & Buon Anno.
Devi accedere o registrarti per scrivere nel forum
6 risposte