返回重复项

brc7rcf0  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(246)

关闭。这个问题需要细节或清晰。它目前不接受答案。
**想改进这个问题吗?**通过编辑这个帖子来添加细节并澄清问题。

4个月前关门了。
改进这个问题
我试图用这段代码将数据插入数据库,但我不断地得到重复的数据,我似乎不知道如何修复它。我对java和mysql非常陌生,所以非常感谢您的帮助和指导。
下面是我的密码

ApproveButton = new JButton("Approve");
        ApproveButton.setFont(new Font("Tahoma", Font.PLAIN, 13));
        ApproveButton.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {

            try{

                int rows=table.getRowCount();
                Class.forName("com.mysql.jdbc.Driver").newInstance();
                Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/swing_demo", "root123", "root12345");

             PreparedStatement upd = connection.prepareStatement("INSERT INTO approvedsales(productname, quantity, price, total, date) VALUES (?, ?,?,?,? )");

                for(int row = 0; row<rows; row++)
                {
                    String productname = (String)table.getValueAt(row, 0);
                    String quantity = (String)table.getValueAt(row, 1);
                    String price = (String)table.getValueAt(row, 2);
                    String total = (String)table.getValueAt(row, 3);
                    String date = (String)table.getValueAt(row, 4);
                    upd.setString(1, productname);
                    upd.setString(2, quantity);
                    upd.setString(3, price);
                    upd.setString(4, total);
                    upd.setString(5, date);

                    upd.addBatch();
                }
                upd.executeBatch();
                int x = upd.executeUpdate();
                if (x == 0) {

                JOptionPane.showMessageDialog(ApproveButton, "This is alredy exist");
            } else {
                JOptionPane.showMessageDialog(ApproveButton,
                    "Data are successfully stored");
            }}
                catch(Exception exception){
                    exception.printStackTrace();
                }
        }});
        ApproveButton.setBounds(129, 204, 89, 23);
        contentPane.add(ApproveButton);

在我的数据库表中,所有列都是varchar(255),没有唯一主键

productname  quantity  price  total  date
biscuits        1       1      1      7th Sept 2020
jucafojl

jucafojl1#

只使用语句#executebatch,不使用executeupdate。

int[] xs = upd.executeBatch();
if (IntStream.of(xs).min().orElse(1) == 0) { ...

通过执行executeupdate,sql将执行两次。
当然,在表的product列定义中使用一个主键也不错。
此外,mysql还可以将insert与另一个更新选项相结合,replace是-我相信-名称。

相关问题