J'essaie de créer une application de réservation en ligne pour un restaurant. Un fichier html appelle une servlet. Cette servlet utilise une base de données MSSQL pour suivre les réservations. Le problème est que la servlet lève une exception en essayant de se connecter à la base de données (la méthode getMessage() renvoie ceci: "com.microsoft.jdbc.sqlserver.SQLServerDriver"). J'ai inclus msbase.jar, mssqlserver.jar et msutil.jar pour le pilote jdbc. Je l'ai fait de cette façon chaque fois que j'ai utilisé MSSQL et cela a toujours fonctionné Y at-il quelque chose d'autre que je dois faire pour obtenir une servlet pour se connecter à MSSQL?ne peut pas se connecter à la base de données servlet cu mssql
Voici le code servlet`s:
public class AddReservation extends HttpServlet{
public void doGet(HttpServletRequest cerere, HttpServletResponse raspuns)
throws ServletException, IOException{
PrintWriter out = raspuns.getWriter();
String nume,zi,luna,an,data,ora,minute;
//get parameters from html
raspuns.setContentType("text/html");
out.println("<HTML><HEAD></HEAD><BODY>");
if(nume.equals("")||zi.equals("")||luna.equals("")||an.equals("")||ora.equals("")||minute.equals("")){
out.println("<H3>NU S-AU COMPLETAT TOATE CAMPURILE</H3>");
}
else{
try{
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
Connection con = DriverManager.getConnection("jdbc:microsoft:sqlserver://LAPTOP-TITI;DatabaseName=Restaurant_Servlet","sa","pass313307");
Statement st = con.createStatement();
data = zi+"/"+luna+"/"+an;
ora = ora +":"+minute;
ResultSet rs;
rs = st.executeQuery("select count(*) from Rezervari where Data ='"+data+"' and Ora ='"+ora+"'");
rs.next();
int n = rs.getInt(1);
if(n==2){
out.println("<H3>NU EXISTA LOCURI LIBERE</H3>");
}
else{//add to db
st.executeUpdate("insert into Rezervari(Nume, Data, Ora) values ('"+nume+"','"+data+"','"+ora+"')");
out.println("<H3>REZERVARE ADAUGATA</H3>");
}
rs.close();
st.close();
con.close();
}
catch(Exception e){
out.println("<H3>NU S-A REALIZAT CONEXIUNE LA BAZA DE DATE<br><br>"+
e.getMessage()+"</H3>");
}
}
out.println("</BODY></HTML>");
out.close();
}
public void doPost(HttpServletRequest cerere, HttpServletResponse raspuns)
throws ServletException, IOException{
doGet(cerere,raspuns);
}
}
P.S. J'utilise serveur apache tomcat sur Windows XP
Tout d'abord, merci beaucoup pour votre réponse. Je mets les JARs dans la lib et ça marche bien maintenant! Deuxièmement, nous venons tout juste d'apprendre les servlets au collège et c'est pourquoi je n'avais besoin que de servlets, pas de JSP. Je suis sûr qu'il y a une meilleure façon de le faire avec JSP mais c'est ce qu'on m'a assigné :) mais nous y arriverons aussi. Merci encore! Oh, pourriez-vous me dire comment sortir le e.printStackTrace()? Je sais comment le faire en java simple mais si je voulais la sortie envoyée à mon HTML? J'ai essayé mais il ne m'a pas laissé, en disant qu'une méthode retournant le vide ne peut pas être envoyée sur printWriter au html – Liviu
Employez 'e.printStackTrace (out);' à la place. Ce n'est cependant pas la bonne approche. Vous devriez ** jeter ** l'exception. 'throw new ServletException (" Une exception s'est produite ", e);' Assurez-vous que vous n'avez pas déjà écrit tout ce HTML * avant * le point. Tout ce que HTML appartient à la JSP. Vous pouvez trouver la page d'information sur les balises servlets: http://stackoverflow.com/tags/servlets/info – BalusC