我无法使用此插入或编辑记录。
我的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();
}
}
答案 0 :(得分:1)
由于您在DAO类中捕获了SQL-Exception,因此它在您的servlet中不可见。这就是为什么你不能抓住它的原因。
所以你必须把它取出来try {
...
} catch (SQLException e) {
e.printStackTrace();
}
阻止你的servlet。
此外,您应该使用准备好的陈述。
答案 1 :(得分:0)
您的编辑方法永远不会抛出SQLException,因为它没有在throws子句中声明它。因此,servlet中的catch子句无法访问。
您不需要从编辑方法中抛出SQLException,但您也不需要使用try块包围调用以进行编辑,并且您不需要捕获SQLException。< / p>