Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 试图使用jdbc事务向数据库表输入值_Java_Mysql_Jdbc_Prepared Statement - Fatal编程技术网

Java 试图使用jdbc事务向数据库表输入值

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

我正在尝试使用数据库事务为保留表、resdetails和resdetails输入一组值。没有抛出异常,但没有将值输入到DB中

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(addedresetif
executeUpdate()
返回
我猜您需要一个提交行?我完全按照上面所述进行了更改。仍然没有效果。您看到任何异常吗?您在
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();
}