Bonjour,
Je souhaite remplacer l'autentification à une application en utilisant preparedstatement à la place de statement pour une meilleure perf.
voici le code que j'ai mis :
et voilà l'erreur que je reçois :
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 package com.web.app.struts.action; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import com.web.app.connexion.DBConnection; import com.web.app.struts.form.LogonForm; public class LoginAction extends Action { public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response){ LogonForm _form = (LogonForm)form; String login = _form.getLogin().toUpperCase(); String password = _form.getPassword().toUpperCase(); int counter = 0; try { Connection myConnexion = DBConnection.getInstance().getConnection(); //Statement stmt = myConnexion.createStatement(); String sql = "SELECT * FROM COLLABORATEURS_TR WHERE INITIALES = ? AND COMMENTAIRE = ?"; PreparedStatement ps = myConnexion.prepareStatement(sql); ps.setString(1, login); ps.setString(2, password); //String sql = "SELECT * FROM COLLABORATEURS_TR WHERE INITIALES = 'AALI' AND COMMENTAIRE = 'TEST'"; //ResultSet rs = stmt.executeQuery(sql); ResultSet rs = ps.executeQuery(sql); while(rs.next()){ counter++; } rs.close(); //stmt.close(); ps.close(); myConnexion.close(); }catch(SQLException sqle){ System.out.println(sqle); } HttpSession session = request.getSession(true); if(counter > 0){ return mapping.findForward("success"); }else{ return mapping.findForward("failure"); } } }
précision : j'utilise sqlserver comme bdd (et je sais que le preparedstatement ne fonctionne pas sous access et mysql mais fonctionne avec oracle).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Invalid call Statement method: {0}
si quelqu'un a une idée ...
merci
Partager