java - Java ResultSet Closed 如何修复它
问题描述
问题是当我单击更新按钮以将表单插入到可以编辑约会的文本字段时,但是当我单击更新按钮时出现错误“结果集已关闭”
try {
int row = jTable5.getSelectedRow();
String Table_Click = (jTable5.getModel().getValueAt(row,0).toString());
String sql = "Select Ap.Appointment_ID,Ap.Doc_ID,(Ut.First_Name) As Doc_FirstName,Ut.Middle_Name As Doc_MiddleName,Ut.Last_Name As Doc_LastName,Ap.Department_ID,Dt.Department_Name,Ap.Patient_ID,Pr.First_Name,Pr.Middle_Name,Pr.Last_Name,Ap.SchedDate,Ap.Description,Ap.App_Date_Registered from Appointment_Table As Ap\n" +
"inner join User_Table As Ut on Ap.Doc_ID=Ut.ID\n" +
"inner join Patient_Records As Pr on Ap.Patient_ID=Pr.Patient_ID\n" +
"inner join Department_Table As Dt on Ap.Department_ID=Dt.Department_ID\n" +
"where Appointment_ID = '"+Table_Click+"'";
pst = conn.prepareStatement(sql);
rs = pst.executeQuery();
if (rs.next()) {
String add0 = rs.getString("Appointment_ID");
AppointmentID.setText(add0);
String add1 = rs.getString("Department_Name");
DoctorDep_Update.setSelectedItem(add1);
String add2 = rs.getString("Doc_FirstName");
DoctorName_Update3.setText(add2);
....
}
} catch(Exception e) {
JOptionPane.showMessageDialog(null, e);
} finally {
try {
rs.close();
pst.close();
} catch(Exception e) {
}
}
当我把
String add2 = rs.getString("Doc_FirstName");
DoctorName_Update3.setText(add2);
出现错误我认为我的查询中有一些错误但我无法解决它..当我尝试在 SQlite Browser 上运行它时结果显示
例外
java.sql.SQLException: ResultSet closed
at org.sqlite.RS.checkOpen(RS.java:57)
at org.sqlite.RS.findColumn(RS.java:103)
at org.sqlite.RS.getString(RS.java:247)
at Portal.ReceptionistPortal.Update_AppointmentsActionPerformed(ReceptionistPortal.java:7912)
at Portal.ReceptionistPortal.access$1900(ReceptionistPortal.java:32)
at Portal.ReceptionistPortal$24.actionPerformed(ReceptionistPortal.java:2256)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6539)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at java.awt.Component.processEvent(Component.java:6304)
at java.awt.Container.processEvent(Container.java:2239)
at java.awt.Component.dispatchEventImpl(Component.java:4889)
at java.awt.Container.dispatchEventImpl(Container.java:2297)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4904)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4535)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4476)
at java.awt.Container.dispatchEventImpl(Container.java:2283)
at java.awt.Window.dispatchEventImpl(Window.java:2746)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:84)
at java.awt.EventQueue$4.run(EventQueue.java:733)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:730)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
它是说错误在
String add2 = rs.getString("Doc_FirstName");
DoctorName_Update3.setText(add2);
解决方案
尝试如下设置你的 sql 字符串:
String sql = " .... where Appointment_ID = ? "
然后使用 PreparedStatement 的 setString 方法设置您的参数:
pst.setString(1,Table_Click);
rs = pst.executeQuery();
推荐阅读
- python - Readline 函数不打印 CSV 文件的 heders
- javascript - “EventTarget”类型上不存在属性“errorCode”
- android - 自定义工具栏未附加到顶部
- wpf - 在 WPF WebView2 中循环 PDF 页面
- python - Django 的 select_for_update 方法是否与 update 方法一起使用?
- javascript - 当我在 vue js 中切换选择框时,如何将 Vuelidate 用于新字段?
- python - 在python中指定函数的输出类型
- windows - Windows 容器:Telegraf 作为 sidecar 看不到 IIS(w3wp)
- gcc - ARM-GCC 链接问题
- python-3.x - python 3.9.4中的类在调用方法时给出不一致的属性错误