关闭。这个问题需要细节或清晰。它目前不接受答案。
**想改进这个问题吗?**通过编辑这个帖子来添加细节并澄清问题。
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
1条答案
按热度按时间jucafojl1#
只使用语句#executebatch,不使用executeupdate。
通过执行executeupdate,sql将执行两次。
当然,在表的product列定义中使用一个主键也不错。
此外,mysql还可以将insert与另一个更新选项相结合,replace是-我相信-名称。