无法插入数据库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的主要内容,如果未能解决你的问题,请参考以下文章
Cause: java.sql.SQLException: ORA-01400: 无法将 NULL 插入 ("MESIRJ"."TMMIS11"."P