MySQL在Java中插入数据两次

时间:2018-04-11 08:29:43

标签: java mysql

我正在尝试将数据从另一个表(购物车)中插入表格(order_details)。当我执行它时,它在数据库中插入两次数据。我无法理解为什么会这样。有谁能够帮我?提前谢谢。

  

CartDAO

public boolean insertCart(String username)
    {
        try
        {
            sql = "INSERT INTO order_details (username, product_code, product_name, qty, product_price, product_pic, order_status)"
                  +"SELECT username, product_code, product_name, qty, product_price, product_pic, order_status FROM cart WHERE username = ? AND order_status = 1";
            con = DbConnection.getConnection();
            pst = con.prepareStatement(sql);
            pst.setString(1, username);
            pst.executeUpdate();
            DbConnection.close();
            return true;
        }catch(ClassNotFoundException | SQLException ex)
        {
            Logger.getLogger(CartDAO.class.getName()).log(Level.SEVERE, null, ex);
            return false;
        }
    }
  

CartWS

public boolean insertOrderDetails(String username)
    {
        CartDAO dao = new CartDAO();
        return dao.insertCart(username);
    }

1 个答案:

答案 0 :(得分:3)

在代码中添加一些日志语句

重复插入问题可能有两个可能的原因

(1)您的方法“insertCart”从代码中调用了2次。如果你在insertCart方法中添加System.out.println()或一些日志语句......你将能够找到。

OR

(2)在插入查询之前打印SELECT查询,如下所示

System.out.println(SELECT username, product_code, product_name, qty, product_price, product_pic, order_status FROM cart WHERE username = ? AND order_status = 1) 

//不要忘记更换?具有适当的价值

从SELECT语句获取的记录数必须与插入表中的记录数相同