选择部门名称

时间:2018-09-24 01:23:15

标签: java database

try{
    String sql = "Select First_Name,MI,Last_Name from User_Table\n" +
                 "inner join Department_Table on User_Table.Department_ID=Department_Table.Department_ID\n" +
                 "where Department_Name = ? ";
    pst = conn.prepareStatement(sql);
    rs = pst.executeQuery();
    pst.setString(1, (String)DoctorDep.getSelectedItem());
    String add1 = rs.getString("First_Name");
    String add2 = rs.getString("MI");
    String add3 = rs.getString("Last_Name");
    DoctorNames.addItem(add1+" "+add2+" "+add3);
}catch(Exception e){
    JOptionPane.showMessageDialog(null, e);
}finally {
   try {
       rs.close();
       pst.close();
   }catch(Exception e){
   }
}

我在JComboBox的“部门名称”上选择了“部门名称”,它将选择该部门上列出的医生的名称,但是显示错误消息结果集已关闭,并且没有填充“医生名称”组合框。是否有错误或无法执行?

1 个答案:

答案 0 :(得分:1)

  • 您应在pst.setString之前调用pst.executeQuery,否则您尚未将值绑定到查询
  • 在尝试访问值之前,应调用rs.next(并检查它的返回值),否则将“在第一个结果之前”。
  • 您还应该使用e.printStackTrace(),因为它将为您提供有关该异常的其他信息(您确实应该记录该异常,但是让我们从此处开始)
  • 您应该使用try-with-resources statement来更好地管理您的资源,因为您冒着使其中某些资源处于开放状态的风险

我建议您花一些时间来研究JDBC Basics Trail,因为这些并不是程序或API问题,而是对API用法的误解