问题描述
- 用servlet更新mysql数据不成功,没有报错,只是无法更新~求大神指点
-
这是更新的函数,在productdaoimpl类里:
public int updateProduct(Product product){
int flag = 0;
DBConnect conn = null;
PreparedStatement pstmt = null;//update statement String sql = "update productinfo set productnumber=?,productvalue=? where productname=?"; try { //connect DB conn = new DBConnect() ; pstmt = conn.getConnection().prepareStatement(sql) ; pstmt.setString(1, product.getProductnumber()); pstmt.setString(2, product.getProductvalue()); pstmt.setString(3, product.getProductname()); //update pstmt.executeUpdate(); flag = 1; pstmt.close(); } catch (Exception e) { e.printStackTrace(); } finally { conn.close(); } return flag;
}
updateServlet的代码:
package jspservlet.servlet;import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;import jspservlet.dao.ProductDAO;
import jspservlet.dao.impl.ProductDAOImpl;
import jspservlet.vo.Product;public class ProductUpdateServlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException{ this.doPost(req, res); } public void doPost(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException{ Product product = new Product(); product.setProductname(req.getParameter("productname")); ProductDAO dao=new ProductDAOImpl(); int flag = 0; int flag2 = 1; try { flag2 = dao.queryByProductName(product); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } if (flag2 == 1) { res.sendRedirect("./errorRegister.jsp"); } else { try { flag = dao.updateProduct(product); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } if( flag == 1) { //session是干嘛的? HttpSession session = req.getSession(); session.setAttribute("productname", product.getProductname()); res.sendRedirect("./success.jsp"); } else { res.sendRedirect("./error.jsp"); } } }
}
JSP页面:
<%@ page language="java" pageEncoding="GB18030"%>
Delete Product
the name of the product you want to update:
<form method="post" action="./update"> productname : <input type="text" name="productname"/><br/> <p>the number and price of the product you want to change to:</p> productnumber : <input type="text" name="productnumber"/><br/> productvalue : <input type="text" name="productvalue"/><br/> <input type="SUBMIT" name="submit" value="Submit"> </form> </body>
解决方案
我找到答案了,是没有获取页面输入导致的
解决方案二:
你要显示一下报错信息,这样才好找
解决方案三:
开启Mysql的日志,看一下实际的SQL语句是什么,然后在查询分析器中执行一下看是什么结果。
解决方案四:
你在Servlet里没有调用dao里面的update方法吧,你调用的是query方法吧
解决方案五:
看错了,没看到下面的
解决方案六:
你看一下query里面有没有拿到值,打印product的各种成员看看
解决方案七:
没有Commit??