用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>

7个回答

我找到答案了,是没有获取页面输入导致的

你看一下query里面有没有拿到值,打印product的各种成员看看

qq_31045649
qq_31045649 query里取到值了,而且整个没有报错的地方啊(ಥ_ಥ)
4 年多之前 回复

没有Commit??

qq_31045649
qq_31045649 commit是什么?
4 年多之前 回复

你要显示一下报错信息,这样才好找

开启Mysql的日志,看一下实际的SQL语句是什么,然后在查询分析器中执行一下看是什么结果。

你在Servlet里没有调用dao里面的update方法吧,你调用的是query方法吧

看错了,没看到下面的

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问