无法插入数据库jsp

Posted

技术标签:

【中文标题】无法插入数据库jsp【英文标题】:Can't insert to database 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 ? 【参考方案1】:

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

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

您的 servlet 中的块。

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

【讨论】:

【参考方案2】:

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

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

【讨论】:

以上是关于无法插入数据库jsp的主要内容,如果未能解决你的问题,请参考以下文章

带有 JSP 的 JDBC 无法插入

使用jsp抛出异常插入mysql数据库

使用jsp抛出异常插入mysql数据库

DateTime 未使用 jsp 插入数据库

Cause: java.sql.SQLException: ORA-01400: 无法将 NULL 插入 ("MESIRJ"."TMMIS11"."P

jsp插入数据库乱码 中文的参数怎么处理