无法插入数据库jsp

时间:2015-06-19 07:17:21

标签: java jsp

我无法使用此插入或编辑记录。

我的SQLException有一个错误“SQLException的无法访问的catch块。这个异常永远不会从try语句体中抛出”
我是Java的新手,所以一切都是学习过程

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String forward = "";
        String action = request.getParameter("action");
        if (action.equalsIgnoreCase("delete")) {
            int surveyid = Integer.parseInt(request.getParameter("survey_id"));
            firstdao.removeFirst(surveyid);
            forward = list_first;
            try {
                request.setAttribute("firsts", firstdao.getFirst());
            } catch (SQLException e) {
                e.printStackTrace();
            }
        } else if (action.equalsIgnoreCase("edit")) {
            forward = insert_or_edit;
            int surveyid = Integer.parseInt(request.getParameter("survey_id"));
            try {
                First first = firstdao.getFirstById(surveyid);
                request.setAttribute("first", first);
            } catch (SQLException e) {
                e.printStackTrace();
            }
        } else if (action.equalsIgnoreCase("listFirst")) {
            forward = list_first;
            try {
                request.setAttribute("firsts", firstdao.getFirst());
            } catch (SQLException e) {
                e.printStackTrace();
            }
        } else {
            forward = insert_or_edit;
        }
        RequestDispatcher view = request.getRequestDispatcher(forward);
        view.forward(request, response);
    }

FirstController.java

private static final long serialVersionUID = 1L;
private static String insert_or_edit = "/first.jsp";
private static String list_first = "/listfirst.jsp";
private FirstDAO firstdao; 
public FirstController() {
super();
firstdao = new FirstDAO();
}

FirstDAO.java

public void addFirst(First first) {
try {
String query = "insert into survey_data_27 (uname, p1q1, p1q2, p1q3, p1q4) values('"+ first.getuname() +"', '"+ first.getp1q1() +"', '"+ first.getp1q2() +"', '"+ first.getp1q3() +"', '"+ first.getp1q4() +"')";
Statement stmt = connection.createStatement();
stmt.executeUpdate(query);
} catch (SQLException e) {
e.printStackTrace();
}
}  

2 个答案:

答案 0 :(得分:1)

由于您在DAO类中捕获了SQL-Exception,因此它在您的servlet中不可见。这就是为什么你不能抓住它的原因。

所以你必须把它取出来
try { 
    ... 
} catch (SQLException e) {
    e.printStackTrace();
}

阻止你的servlet。

此外,您应该使用准备好的陈述。

答案 1 :(得分:0)

您的编辑方法永远不会抛出SQLException,因为它没有在throws子句中声明它。因此,servlet中的catch子句无法访问。

您不需要从编辑方法中抛出SQLException,但您也不需要使用try块包围调用以进行编辑,并且您不需要捕获SQLException。< / p>