preparedstatement - erreur sql
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 :
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
|
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");
}
}
} |
et voilà l'erreur que je reçois :
Code:
1 2
|
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Invalid call Statement method: {0} |
précision : j'utilise sqlserver comme bdd (et je sais que le preparedstatement ne fonctionne pas sous access et mysql mais fonctionne avec oracle).
si quelqu'un a une idée ...
merci