[英]Heroku error in logs: java.lang.ClassNotFoundException: org.apache.derby.jdbc.ClientDriver
[英]java.lang.ClassNotFoundException: org.apach.derby.jdbc.ClientDriver
我想使用derby在netbeans中操作我的数据库,但是我收到了这个错误:
java.lang.ClassNotFoundException: org.apach.derby.jdbc.ClientDriver
要添加derby库,我已经完成了:
右键单击“库”然后
在列表中,我选择了Java DB Driver
这是我的类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);
}
}
}
即使我改变了:
Class.forName("org.apach.derby.jdbc.ClientDriver");
至:
Class.forName("org.apach.derby.jdbc.client");
我总是收到错误!
你正在加载的类名中有一个拼写错误。
注意在Apache中的E:
"org.apache.derby.jdbc.ClientDriver"
不再需要Class.forName。 只需添加jar就可以添加JDBC驱动程序。 只需注释掉这部分代码。 不再需要Class.forName(JDBC_DRIVER)?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.