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()
saveBActionPerformed()
中未使用)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);
}
}
}