微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 While java

如何解决使用 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

这是表中的数据

enter image description here

准备好的语句只执行相同的值......

解决方法

您的 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 举报,一经查实,本站将立刻删除。