Pilote sql server introuvable
Bonjour,j'ai créé un servlet et j'essaie de me connecter à une BD sql server 2005 mais j'ai l'erreur suivante:
Citation:
java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver
Apparemment le pilote est introuvable.Pourtant j'ai bien inséré le pilote en faisant ceci:
bouton droit sur le projet-build path-configure build path-add external jar et je cherche le chemin du pilote et je clique sur ok.
En fait j'ai créé un répertoire lib contenant le pilote,et j'ai mis le lib dans le projet.
Voici mon code:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
| import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ServletRec extends HttpServlet {
private static final long serialVersionUID = 1L;
private Database db=null;
public ServletRec() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
//récupération des informations
String email = request.getParameter("email");
String comment = request.getParameter("comment");
//connexion à la BD et enregistrement
db = new Database();
db.setPilote("com.microsoft.sqlserver.jdbc.SQLServerDriver");
db.setConnection("jdbc:sqlserver://localhost:1433;databaseName=SmartSoftwares", "sa", "passer");
String requete="insert into suggestion(email,comment)values('"+email+"','"+comment+"')";
db.setPStatement(requete);
if(db.sendRequeteLMD()>0)
{
response.sendRedirect("index.html?param=ok");
}
else
{
response.sendRedirect("index.html?param=ko");
}
}
} |
Pour info,le pilote n'est pas corrompu car je l'ai testé sur un autre projet JDBC et tout marche bien.J'arrive à me connecter à la BD et à insérer des données.
Donc avec le projet concernant les servlets,je ne sais vraiment pas pourquoi j'arrive pas à charger le pilote.
Au fait dans le code ci-dessus,vous avez du remarquer des méthodes telles que "setPilote","setConnection" etc.En fait c'est une classe nommée "DataBase" que j'ai créé permettant de charger le pilote,de me connecter à la BD.Voici la classe DataBase:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112
|
import java.sql.*;
import javax.swing.JOptionPane;
public class Database {
private String pilote;
private Connection con;
private PreparedStatement pstmt;
private String url;
private String user;
private String pwd;
private String requete;
public Database(){
pilote=null;
con=null;
pstmt=null;
user=null;
pwd=null;
url=null;
requete=null;
}
//la methode qui charge le pilote
public void setPilote(String pilote){
this.pilote=pilote;
try {
Class.forName(this.pilote);
} catch (ClassNotFoundException e) {
JOptionPane.showMessageDialog(null,"Impossible de charger le pilote");
}
}
//la methode qui créée la connexion
public void setConnection(String url, String user, String pwd){
this.url=url;
this.user=user;
this.pwd=pwd;
try {
con=DriverManager.getConnection(this.url,this.user,this.pwd);
} catch (SQLException e) {
JOptionPane.showMessageDialog(null,"Impossible d'etablir la connexion");
}
}
//la methode qui créée le preparedstatement
public void setPStatement(String requete){
this.requete=requete;
try {
pstmt=con.prepareStatement(this.requete);
} catch (SQLException e) {
JOptionPane.showMessageDialog(null,"Impossible de créer le prepared statement");
}
}
//la methode qui envoit une requte d'interrogation
public ResultSet sendRequeteLID(){
ResultSet rs=null;
try {
rs=pstmt.executeQuery();
} catch (SQLException e) {
JOptionPane.showMessageDialog(null,"Requete d'interrogation échouée");
}
return rs;
}
//la methode qui envoit une requete de mise à jour
public int sendRequeteLMD(){
int ligne=0;
try {
ligne=pstmt.executeUpdate();
} catch (SQLException e) {
JOptionPane.showMessageDialog(null,"requete de mise à jour échouée");
}
return ligne;
}
//la mthode qui envoit une reque de definition de la base de données
public boolean sendRequeteLDD(){
boolean test=false;
try {
test=pstmt.execute();
} catch (SQLException e) {
JOptionPane.showMessageDialog(null,"Requete de definition échouée");
}
return test;
}
public PreparedStatement getPStmt(){
return pstmt;
}
public Connection getCon(){
return con;
}
} |
Merci d'avance.