код блока try-catch базы данных не выполняется - PullRequest
0 голосов
/ 08 марта 2019

Я хочу подключиться к базе данных MySQL методом try-catch. Но моя консоль затмения продолжает показывать "GOT AN ERROR", которая находится в моем блоке catch. Пожалуйста, помогите мне через это, поскольку я новичок в Java и обработке исключений. Ниже приведен мой код.

public class MyServlet extends HttpServlet{  

    private static final long serialVersionUID = 1L;        
     protected  void doPost(HttpServletRequest request,
                HttpServletResponse response) throws ServletException, IOException {
        String task;
        String tm;

         task = request.getParameter("task");
         tm= request.getParameter("reminder_time");
        // System.out.println("task = "+task+"time ="+tm);
         try {
             SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.SSS");
                Date parsedDate = dateFormat.parse(tm);
                java.sql.Timestamp timestamp = new java.sql.Timestamp(parsedDate.getTime());
            //System.out.println("Time=");
            Connection con =DriverManager.getConnection(  
            "jdbc:mysql://localhost:3306/reminder","xyz","xyz123");  
             String INSERT_RECORD = "insert into ToDo values(?, ?)";
                    PreparedStatement pstmt = null;
                      pstmt.close();
                      pstmt = con.prepareStatement(INSERT_RECORD);
                      pstmt.close();
                      pstmt.setString(1, task);
                      pstmt.close();
                      //pstmt.setDate(2, timestamp);
                      pstmt.close();
                      int rs= pstmt.executeUpdate();

            if(rs!=0){

//              response.sendRedirect("success.html");
//              return;
                PrintWriter out= response.getWriter();
                out.println("Successfull");     
                pstmt.close();
                con.close();

            }
            else{
            //  response.sendRedirect("error.html");
                PrintWriter out= response.getWriter();
                out.println("Failed");
            }

        } 
         catch (Exception e) {
            System.out.println("Got an ERROR");
        }
     }
}  

Заранее спасибо.

1 Ответ

0 голосов
/ 08 марта 2019

Чтобы определить ошибку доступа к базе данных, которая вызвала ваше предложение catch, попробуйте следующий код:

catch (SqlException e) {
    System.out.println("database exception");
    System.out.println(e); 
    e.printStackTrace(); 
}
catch (Exception e)
    System.out.println("unexpected exception");
    System.out.println(e); 
    e.printStackTrace(); 
    throw;
}

Вам нужен номер строки, сгенерировавший исключение, и printStackTrace() покажет его вам.Или в отладчике Eclipse установите точку останова в обработчике исключений и проверьте исключение.

Ваш код показывает это:

            PreparedStatement pstmt = null;
            pstmt.close();

Вторая из этих строк генерирует исключение, поскольку вы не можетевызовите метод без объекта.

Совет Pro : во многих сценариях в реальном мире невозможность завершить соединение сильно отличается от неспособности завершить запрос INSERT или какой-либо другойзапрос.Проблемы с подключением обычно означают, что сервер базы данных выключен или ваша сеть работает неправильно.Проблемы с запросами часто означают, что у вас есть какая-то проблема в логике вашей программы или базы данных.Возможно, вы решите использовать два блока try / catch, один для соединения, а другой для запроса.

Pro tip : всегда делать отступы в своем коде, чтобы правильно отображать вложение.Eclipse (и большинство IDE) сделает это за вас.

...