无法连接servlet cu mssql数据库

时间:2010-12-08 19:36:53

标签: java sql-server servlets jdbc

我正在尝试为餐馆创建一个在线预订应用程序。 html文件调用servlet。此servlet使用MSSQL数据库来跟踪预订。问题是servlet在尝试连接数据库时会抛出异常(getMessage()方法返回这个:“com.microsoft.jdbc.sqlserver.SQLServerDriver”)。我已经为jdbc驱动程序包含了msbase.jar,mssqlserver.jar和msutil.jar。每次我使用MSSQL时都会这样做,它总能工作 为了让servlet连接到MSSQL,我还需要做些什么吗?

这是servlet的代码:

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。我在windows Xp上使用apache tomcat服务器

1 个答案:

答案 0 :(得分:0)

  

getMessage()方法返回:“com.microsoft.jdbc.sqlserver.SQLServerDriver”

首先,不要只打印异常消息。将整个异常和跟踪打印到服务器日志中。这提供了更有价值的信息。

e.printStackTrace();

但是,只包含完整限定类名的异常消息是ClassNotFoundException的典型消息。这反过来意味着JDBC驱动程序不在类路径中。您需要将JAR文件放在webapp的/WEB-INF/lib文件夹中。此文件夹是webapp的运行时类路径的一部分。


与问题无关:servlet不是输出HTML的正确位置。 JSP就是为了。它实际上也不是直接编写DB连接代码的正确位置,但这是一个完整的故事:)