如何解决使用 While java
所以我试图用条件将数据输入到我的 sql server 中,我打印出该值并且该方法没有任何问题,但是准备语句只向表中添加了一个相同的数据,这是我的代码
public static void tunjanganKaryawan(){
try {
Staff staff = new Staff();
Statement stmt=getConn().createStatement();
ResultSet rs=stmt.executeQuery("select * from list_karyawan where Status ='Tetap'");
while(rs.next()){
staff.setCuti(rs.getInt("Cuti") + rs.getInt("Tanpa_Kabar"));
staff.setjmlhAbsensi(rs.getInt("Absensi"));
int makan1 = (int) staff.gethitungTunjanganMakan();
int Trans = (int) staff.gethitungTunjanganTrans();
System.out.println(makan1+" "+Trans);
String query = "update list_karyawan set Tunjangan_Makan = ?,Tunjangan_Trans = ? where Status = 'Tetap'";
ps = getConn().prepareStatement(query);
ps.setInt(1,makan1);
ps.setInt(2,Trans);
ps.executeUpdate();
}
}catch (Exception e){
System.out.println(e);
}
}
这是我打印出 makan 和 trans 时的结果
200000 400000
170000 340000
170000 340000
130000 260000
170000 340000
准备好的语句只执行相同的值......
解决方法
您的 sql 查询
update list_karyawan set Tunjangan_Makan = ?,Tunjangan_Trans = ? where Status = 'Tetap'
将更新 Status = 'Tetap'
处的所有记录,而不是一次更新一条记录。此外,select *
正在从您的数据库中提取更多数据,即使用比您想要的用例更多的资源。我建议选择需要的字段,例如
select ID,Cuti,Tanpa_Kabar,Absensi from list_karyawan where Status ='Tetap'
为了更新单独的记录,在 sql 语句的 where 条件中使用唯一标识符(例如 ID
列)将解决您的问题。推荐的修改已包含在下面:
public static void tunjanganKaryawan(){
try {
Staff staff = new Staff();
Statement stmt=getConn().createStatement();
ResultSet rs=stmt.executeQuery("select ID,Absensi from list_karyawan where Status ='Tetap'");
while(rs.next()){
staff.setCuti(rs.getInt("Cuti") + rs.getInt("Tanpa_Kabar"));
staff.setjmlhAbsensi(rs.getInt("Absensi"));
int makan1 = (int) staff.gethitungTunjanganMakan();
int Trans = (int) staff.gethitungTunjanganTrans();
System.out.println(makan1+" "+Trans);
String query = "update list_karyawan set Tunjangan_Makan = ?,Tunjangan_Trans = ? where ID=?";
ps = getConn().prepareStatement(query);
ps.setInt(1,makan1);
ps.setInt(2,Trans);
ps.setInt(3,rs.getInt("ID")); //use id from previous query
ps.executeUpdate();
}
}catch (Exception e){
System.out.println(e);
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。