我希望在添加具有相同类型的新项目时在数据库中更新数量。数量已更新,但每次更新时都会保存新记录。我正在使用mysql查询浏览器和netbeans来开发这个软件。
ResultSet rs=DB.createConnection().createStatement().executeQuery("select * from orders where status=('"+1+"')");
if (rs.next()) {
System.out.println("DB True");
do{
System.out.println("in_While");
int dctno=Integer.parseInt(rs.getString("ctno"));
int dctype=Integer.parseInt(rs.getString("ctype"));
int dqty=Integer.parseInt(rs.getString("qty"));
int nw_qty=dqty+qty;
if (dctno==ctno && dctype==ctype) {
System.out.println("Equals/Stock ctype= "+ctype);
DB.createConnection().createStatement().executeUpdate("update orders set qty=('"+nw_qty+"') where ctno=('"+ctno+"') and ctype=('"+ctype+"')");
System.out.println("DB Updated");
txtQuantity.setText("");
dt.setRowCount(0);
}else{
System.out.println("Not");
DB.createConnection().createStatement().executeUpdate("insert into orders(ctno,ctype,qty,date,status) values('"+ctno+"','"+ctype+"','"+qty+"','"+txtlDate.getText()+"','"+1+"')");
}
System.out.println("end_While");
}while (rs.next());
答案 0 :(得分:1)
你的逻辑错了。您循环遍历整个结果集,并为集合中的每个记录执行操作。
所以,假设你有3行,一行符合你的标准,另外两行没有。在这种情况下,一个记录将被更新和将插入两个新记录。
要修复它,你应该:
在旁注中,还有一些其他评论/评论: