使用 While java 将数据更新到 SQL 服务器
Update data to SQL Server with While java
所以我试图将数据输入到我的 sql 服务器中,我打印出值并且该方法没有任何问题,但是 prepare 语句仅将一个相同的数据添加到 table,这是我的代码
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);
}
}
Here is the result when i print out the makan and trans
200000 400000
170000 340000
170000 340000
130000 260000
170000 340000
这里是 table 中的数据
准备好的语句只执行相同的值....
您的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,Cuti,Tanpa_Kabar,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);
}
}
所以我试图将数据输入到我的 sql 服务器中,我打印出值并且该方法没有任何问题,但是 prepare 语句仅将一个相同的数据添加到 table,这是我的代码
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);
}
}
Here is the result when i print out the makan and trans
200000 400000
170000 340000
170000 340000
130000 260000
170000 340000
这里是 table 中的数据
准备好的语句只执行相同的值....
您的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,Cuti,Tanpa_Kabar,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);
}
}