【问题标题】:Can't insert to database jsp无法插入数据库jsp
【发布时间】:2015-06-19 07:17:21
【问题描述】:

我不能用这个插入或编辑记录。

我的 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();
}
}  

【问题讨论】:

  • 你能展示一下firstdao的实现吗?
  • 我已经添加了 FirstController 和 FirstDAO
  • 你为什么不使用 PreparedStatement ?

标签: java jsp


【解决方案1】:

由于您在 DAO 类中捕获了 SQL 异常,因此它在您的 servlet 中不可见。这就是为什么你不能在那里抓住它。所以你必须删除

try { 
    ... 
} catch (SQLException e) {
    e.printStackTrace();
}

您的 servlet 中的块。

你也应该使用准备好的语句。

【讨论】:

    【解决方案2】:

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

    您不需要从 edit 方法抛出 SQLException,但也不需要用 try 块包围对 edit 的调用,也不需要捕获 SQLException。

    【讨论】:

      猜你喜欢
      • 2020-08-29
      • 2012-06-16
      • 2014-07-07
      • 2018-10-14
      • 2015-12-11
      • 2017-10-23
      • 1970-01-01
      • 2012-04-13
      相关资源
      最近更新 更多