не может подключиться к сервлету базы данных mssql - PullRequest
0 голосов
/ 08 декабря 2010

Я пытаюсь создать онлайн-заявку на бронирование ресторана.HTML-файл вызывает сервлет.Этот сервлет использует базу данных MSSQL для отслеживания бронирований.Проблема заключается в том, что сервлет генерирует исключение при попытке подключения к базе данных (метод getMessage () возвращает это: «com.microsoft.jdbc.sqlserver.SQLServerDriver»).Я включил msbase.jar, mssqlserver.jar и msutil.jar для драйвера jdbc.Я делал так каждый раз, когда использовал MSSQL, и он всегда работал. Есть ли что-то еще, что мне нужно сделать, чтобы сервлет подключился к MSSQL?

Вот код сервлета:

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);
    }
}

ps Я использую сервер Apache Tomcat на Windows Xp

1 Ответ

0 голосов
/ 08 декабря 2010

метод getMessage () возвращает это: "com.microsoft.jdbc.sqlserver.SQLServerDriver"

Прежде всего, не печатайте только сообщение об исключении.Напечатайте все исключение и трассировку в журналах сервера.Это дает более ценную информацию.

e.printStackTrace();

Сообщение об исключении, которое содержит только полное имя класса, типично для ClassNotFoundException.Это, в свою очередь, означает, что драйвер JDBC не находится в пути к классам.Вам необходимо поместить файлы JAR в папку /WEB-INF/lib вашего веб-приложения.Эта папка является частью classpath веб-приложения.


Не имеет отношения к проблеме: сервлет не подходит для вывода HTML.Там JSP для.На самом деле, это также не то место, где можно прямо писать код подключения к БД, но это отдельная история:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...