Bonjour,j'ai créé un servlet et j'essaie de me connecter à une BD sql server 2005 mais j'ai l'erreur suivante:
Apparemment le pilote est introuvable.Pourtant j'ai bien inséré le pilote en faisant ceci:java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver
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:
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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"); } } }
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.
Partager