3

I'd like to use derby to manipulate my database in netbeans but I get this error:

java.lang.ClassNotFoundException: org.apach.derby.jdbc.ClientDriver 

To add the derby library, I have done:

  1. Right click on "Libraries" then

  2. On the list, i selected Java DB Driver

Here is the code of my class ConnexionDB.java

public class ConnexionDB { private Connection conx = null; private final String urlBDD = "jdbc:derby://localhost:1527/tennis;create=true;user=tennis;password=tennis"; private String MessageError = "No Errors ! "; public ConnexionDB() { this.openConnexion(); this.createDataBase(); } private String getMessageError() { return MessageError; } private void setMessageError(String MessageError) { this.MessageError = MessageError; } private void openConnexion() { try { Class.forName("org.apach.derby.jdbc.ClientDriver"); this.conx = DriverManager.getConnection(urlBDD); } catch (Exception ex) { this.setMessageError("BD_Connexion:ouvrirConnexion:Erreur::: " + ex.getMessage()); ex.printStackTrace(); } } public void closeConnexion() { try { this.conx.close(); } catch (SQLException ex) { this.setMessageErreur("BD_Connexion:fermerConnexion:Erreur::: " + ex.getMessage()); } } public Object[][] selectExe(String requete) { Object[][] data = new Object[1][1]; try { if (requete.toLowerCase().contains("select")) { Statement ReqExe = this.conx.createStatement(); ResultSet ReqRes = ReqExe.executeQuery(requete); int nbreColonne = ReqRes.getMetaData().getColumnCount(); int nbreLigne = this.nombreLigne(requete); data = new Object[nbreLigne + 1][nbreColonne]; for (int i = 1; i <= nbreColonne; i++) { data[0][i - 1] = ReqRes.getMetaData().getCatalogName(i); } int cmptr = 1; while (ReqRes.next()) { for (int i = 1; i <= nbreColonne; i++) { data[cmptr][i - 1] = ReqRes.getString(i); } cmptr++; } ReqRes.close(); ReqExe.close(); } } catch (Exception ex) { this.setMessageErreur("BD_Connexion:selectExe:Erreur::: " + ex.getMessage()); } return data; } private int nombreLigne(String requete) { int nbreLigne = 0; try { if (requete.toLowerCase().contains("select")) { Statement ReqExe = this.conx.createStatement(); ResultSet ReqRes = ReqExe.executeQuery(requete); // while (ReqRes.next()) { nbreLigne++; } ReqRes.close(); ReqExe.close(); } } catch (Exception ex) { this.setMessageErreur("BD_Connexion:nombreLigne:Erreur::: " + ex.getMessage()); } return nbreLigne; } public boolean updateExe(String requete) { boolean data = false; try { if (!requete.toLowerCase().contains("select")) { Statement ReqExe = this.conx.createStatement(); int reqInfo = ReqExe.executeUpdate(requete); if (reqInfo > 0) { data = true; } ReqExe.close(); } } catch (Exception ex) { this.setMessageErreur("BD_Connexion:updateExe:Erreur::: " + ex.getMessage()); } return data; } private void createDataBase() { try { Statement ReqExe = this.conx.createStatement(); String tableAdherent = "CREATE TABLE IF NOT EXISTS ADHERENT\n" + "(NUMEROADHERENT INTEGER PRIMARY KEY GENERATED ALWAYS AS IDENTITY\n" + "(START WITH 1, INCREMENT BY 1),\n" + "NOM VARCHAR(24) NOT NULL,\n" + "PRENOM VARCHAR(24) NOT NULL,\n" + "ADDRESSE VARCHAR(50),\n" + "TELEPHONE VARCHAR(24),\n" + "EMAIL VARCHAR(30) NOT NULL UNIQUE,\n" + "PASSWORD VARCHAR(35) NOT NULL);"; ReqExe.execute(tableAdherent); String tableTouroi = "CREATE TABLE IF NOT EXISTS TOURNOI\n" + "(CODETOURNOI INTEGER PRIMARY KEY AUTOINCREMENT,\n" + "NOM VARCHAR(24) NOT NULL,\n" + "DATE VARCHAR(30) NOT NULL,\n" + "LIEU VARCHAR(30));"; ReqExe.execute(tableTouroi); String tableInscription = "CREATE TABLE IF NOT EXISTS INSCRIPTION\n" + "(IDINSCRIPTION INTEGER PRIMARY KEY AUTOINCREMENT,\n" + "NUMEROADHERENT INTEGER NOT NULL,\n" + "CODETOURNOI INTEGER NOT NULL,\n" + "DATEINSCRIPTION VARCHAR(30) NOT NULL,\n" + "CONSTRAINT fk_numeroAdherent Foreign KEY (NUMEROADHERENT) references ADHERENT(NUMEROADHERENT),\n" + "CONSTRAINT fk_codeTournoi Foreign KEY (CODETOURNOI) references TOURNOI(CODETOURNOI));"; ReqExe.execute(tableInscription); ReqExe.close(); } catch (SQLException ex) { System.out.println("Echecs : Creation des tables"); Logger.getLogger(ConnexionDB.class.getName()).log(Level.SEVERE, null, ex); } } } 

Even if I change:

Class.forName("org.apach.derby.jdbc.ClientDriver"); 

to:

Class.forName("org.apach.derby.jdbc.client"); 

I always get an error!

2
  • What is the name of the library you added? Isn't it derbyClient.jar? Where did you get it? Commented May 1, 2017 at 12:13
  • derbyclient.jar Commented May 1, 2017 at 12:24

2 Answers 2

4

There's a typo in the class name you're loading.

Notice the e in apache:

"org.apache.derby.jdbc.ClientDriver" 
Sign up to request clarification or add additional context in comments.

Comments

0

Class.forName is no longer required. Just adding the jar will add the JDBC driver. Just comment out this section of Code. Class.forName(JDBC_DRIVER) no longer needed?

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.