Java executeQuery()使程序挂起

Java executeQuery()使程序挂起,java,sql,jdbc,Java,Sql,Jdbc,我正在处理一个包含三个表的数据库: 我想插入一条新记录,以便在DonorInformation和NeedyInformation中添加信息。然后,在从这两个记录中获取主ID后,应将该记录插入到捐赠表中 为了实现这一点,我做了以下操作,但它没有显示错误,并且挂起了保存按钮。请帮忙 代码: 请将以下变量的作用域设置为两种方法中的局部变量insertDonorPersonal()和saveBActionPerformed() java.sql.Connection-con java.sql.Sta

我正在处理一个包含三个表的数据库:

我想插入一条新记录,以便在
DonorInformation
NeedyInformation
中添加信息。然后,在从这两个记录中获取主ID后,应将该记录插入到
捐赠
表中

为了实现这一点,我做了以下操作,但它没有显示错误,并且挂起了保存按钮。请帮忙

代码:


请将以下变量的作用域设置为两种方法中的局部变量
insertDonorPersonal()
saveBActionPerformed()

  • java.sql.Connection-con
  • java.sql.Statement stmt;(在
    saveBActionPerformed()
    中未使用)
  • java.sql.ResultSet-rs
  • java.sql.prepareds语句;(仅在
    saveBActionPerformed()
    中)
  • 请从中删除以下代码段:
    saveBActionPerformed()

  • stmt=
    con.createStatement(ResultSet.TYPE\u SCROLL\u不敏感,ResultSet.CONCUR\u可更新)
  • stmt.close()

  • 请查看方法的定义
    resetComponents()。此方法可能负责挂起您的程序。

    请将以下变量的范围设置为两种方法的局部变量
    insertDonorPersonal()
    saveBActionPerformed()

  • java.sql.Connection-con
  • java.sql.Statement stmt;(在
    saveBActionPerformed()
    中未使用)
  • java.sql.ResultSet-rs
  • java.sql.prepareds语句;(仅在
    saveBActionPerformed()
    中)
  • 请从中删除以下代码段:
    saveBActionPerformed()

  • stmt=
    con.createStatement(ResultSet.TYPE\u SCROLL\u不敏感,ResultSet.CONCUR\u可更新)
  • stmt.close()

  • 请查看方法的定义
    resetComponents()。此方法可能负责挂起您的程序。

    请将相关信息添加到问题本身,而不是作为外部资源。没有添加外部资源。我已经发布了代码,显示没有错误,但也不工作。你能指定什么是真正的“挂起”吗?你这么说是什么意思?意味着帧只是挂起,然后我必须从netbeans输出窗格停止程序。你应该开始告诉use挂起的位置,我能想到的是insertDonorPersonnal方法,我猜,它也在他的范围内创建了一个连接。你关对了吗。插页起作用了吗?使用debbuger查找代码开始等待的位置(可能连接需要几秒钟)请将相关信息添加到问题本身,而不是作为外部资源。没有添加外部资源。我已经发布了代码,显示没有错误,但也不工作。你能指定什么是真正的“挂起”吗?你这么说是什么意思?意味着帧只是挂起,然后我必须从netbeans输出窗格停止程序。你应该开始告诉use挂起的位置,我能想到的是insertDonorPersonnal方法,我猜,它也在他的范围内创建了一个连接。你关对了吗。插页起作用了吗?使用debbuger查找代码开始等待的位置(可能连接需要几秒钟),并按照建议删除。方法resetComponent();正在清除所有字段。但是编译器挂起在s.executeUpdate();它没有进一步说明,因此resetComponent()甚至不可读。这如何回答这个问题?按建议删除。方法resetComponent();正在清除所有字段。但是编译器挂起在s.executeUpdate();它没有走得更远,所以resetComponent()甚至都不可读。这是如何回答这个问题的?
    public int insertDonorPersonal() throws SQLException{
    int id=0;
          try {
              String urlDB= System.getProperty("user.dir").concat("\\database.accdb");
              con=DriverManager.getConnection("jdbc:ucanaccess://"+urlDB+";memory=true");
              stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
    
              //Inserting in Donor Information
              String SQLString = "INSERT INTO DonerInformation(DonorName,PhoneNumber,Address,City,BloodGroup)VALUES('" 
                      +DonorName.getText()+ "','" +PhoneNumber.getText()+ "','"+Address.getText()+"','"
                      + City.getText()+"','"+BloodGroup.getText()+"' )";
              stmt.executeUpdate(SQLString);
              rs=stmt.executeQuery("Select * from DonerInformation");
              rs.last(); 
              id= rs.getInt("DonorID");
          } catch (SQLException ex) {
              Logger.getLogger(addNewInternal.class.getName()).log(Level.SEVERE, null, ex);
          }finally{
          stmt.close();rs.close();con.close();
          }
          return id;
    
    }
    
    private void saveBActionPerformed(java.awt.event.ActionEvent evt) {                                      
       try {
           int id= insertDonorPersonal();
            String urlDB= System.getProperty("user.dir").concat("\\database.accdb");
              con=DriverManager.getConnection("jdbc:ucanaccess://"+urlDB+";memory=true");
    
         PreparedStatement s = con.prepareStatement("INSERT INTO Donation(DonationDate,DonatedAmount,PaidBy,CheckNo,DonorID,NeedyID)VALUES(?,?,?,?,?,? )");
    
            DateFormat sysDate = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
            String date = sysDate.format(jXDatePicker1.getDate()).toString();
             java.util.Date passDate= sysDate.parse(date);
             s.setTimestamp(1, new Timestamp(passDate.getTime())); //DonationDate
            s.setDouble(2, Double.parseDouble(Amount.getText()));//DonatedAmount
            s.setString(3, comboS.getSelectedItem().toString());//PaidBy
            s.setString(4, CheckNo.getText());//CheckNo
            s.setInt(5, id);//DonorID
               s.setInt(6, Integer.parseInt(needyTable.getValueAt(needyTable.getSelectedRow(), 0).toString()));//NeedyID
    
           s.executeUpdate();
            s.close();
    
            JOptionPane.showMessageDialog(this, "Save Succesfull");
            resetComponents();
        } catch (SQLException ex) {
           ex.printStackTrace();
        } catch (ParseException ex) {  
        ex.printStackTrace();
    } 
       finally{
           try {
              con.close();
           } catch (SQLException ex) {
               Logger.getLogger(addNewInternal.class.getName()).log(Level.SEVERE, null, ex);
           }
       }
    
    }