Java 试图使用jdbc事务向数据库表输入值
我正在尝试使用数据库事务为保留表、resdetails和resdetails输入一组值。没有抛出异常,但没有将值输入到DB中Java 试图使用jdbc事务向数据库表输入值,java,mysql,jdbc,prepared-statement,Java,Mysql,Jdbc,Prepared Statement,我正在尝试使用数据库事务为保留表、resdetails和resdetails输入一组值。没有抛出异常,但没有将值输入到DB中 public boolean addReservation(Reservation res, ArrayList<ReservationDetails> resdetlist) throws Exception { connection = DBConnection.getDBConnection(); try { System
public boolean addReservation(Reservation res, ArrayList<ReservationDetails> resdetlist) throws Exception {
connection = DBConnection.getDBConnection();
try {
System.out.println("A");
connection.setAutoCommit(false);
PreparedStatement ps1 = connection.prepareStatement("insert into reservation values(?,?,?,?)");
ps1.setString(1, res.getResid());
ps1.setBoolean(2, res.isCheckin_status());
ps1.setString(3, res.getRes_from());
ps1.setString(4, res.getRes_till());
int addedres = ps1.executeUpdate();
System.out.println("addres:" + addedres);
System.out.println("B");
if (addedres > 0) {
for (ReservationDetails resdet : resdetlist) {
//int addedresdet = addReservationDetails(resdet);
PreparedStatement ps2 = connection.prepareStatement("insert into resdetails values(?,?,?,?,?,?)");
ps2.setString(1, resdet.getResid());
ps2.setString(2, resdet.getNic());
ps2.setString(3, resdet.getPayment_id());
ps2.setString(4, resdet.getRoom_no());
ps2.setString(5, resdet.getType_of_accomodation());
ps2.setString(6, resdet.getDate_of_reservation());
int addedresdet = ps2.executeUpdate();
System.out.println("addedresdet:" + addedresdet);
System.out.println("C");
if (addedresdet <= 0) {
System.out.println("D");
connection.rollback();
return false;
}
}
} else {
System.out.println("E");
connection.rollback();
return false;
}
connection.commit();
} catch (Exception ex) {
// ex.printStackTrace();
connection.rollback();
} finally {
connection.setAutoCommit(true);
System.out.println("F");
}
return true;
}
public boolean addReservation(Reservation res,ArrayList resdetlist)引发异常{
connection=DBConnection.getDBConnection();
试一试{
系统输出打印项次(“A”);
connection.setAutoCommit(false);
PreparedStatement ps1=connection.prepareStatement(“插入保留值(?,,?)”;
ps1.setString(1,res.getResid());
ps1.setBoolean(2,res.isCheckin_status());
ps1.setString(3,res.getRes_from());
ps1.setString(4,res.getRes_till());
int addedres=ps1.executeUpdate();
System.out.println(“addres:+addres”);
系统输出打印项次(“B”);
如果(加法大于0){
for(ReservationDetails resdet:resdetlist){
//int addedresdet=addReservationDetails(resdet);
PreparedStatement ps2=connection.prepareStatement(“插入resdetails值(?,,,,,,,,?)”;
设置字符串(1,resdet.getResid());
设置字符串(2,resdet.getNic());
ps2.setString(3,resdet.getPayment_id());
ps2.setString(4,resdet.getRoom_no());
ps2.setString(5,resdet.getType of_acomodation());
ps2.setString(6,resdet.getDate\u of_reservation());
int addedresdet=ps2.executeUpdate();
System.out.println(“addedresdet:+addedresdet”);
系统输出打印项次(“C”);
if(addedresetifexecuteUpdate()
返回我猜您需要一个提交行?我完全按照上面所述进行了更改。仍然没有效果。您看到任何异常吗?您在catch(Exception ex)
中捕获它们,但您没有打印它们://ex.printStackTrace()
是的,抛出了一个异常。已更正。无论如何,感谢您指出这一点!!
try {
connection.setAutoCommit(false);
PreparedStatement ps1 = ...
...
ps1.executeUpdate();
for (ReservationDetails resdet : resdetlist) {
PreparedStatement ps2 = ...
...
ps2.executeUpdate();
}
connection.commit();
} catch (SQLException e) {
connection.rollback();
}