java - 选择部门名称时填写JComboBox
问题描述
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
,它将选择该部门中列出的医生的姓名,但它显示错误消息结果集已关闭,并且未填充组合框医生名称。是否有错误或无法做到?
解决方案
- 您应该调用
pst.setString
BEFOREpst.executeQuery
,否则您没有将值绑定到查询 - 您应该在尝试访问结果值之前调用
rs.next
(并检查它的返回值),否则您将“在第一个”结果之前。 - 您还应该使用
e.printStackTrace()
它,因为它将为您提供有关异常的其他信息(您确实应该记录它,但让我们从那里开始) - 您应该使用该
try-with-resources
语句来更好地管理您的资源,因为您冒着让其中一些资源处于打开状态的风险
我建议您花时间阅读JDBC Basics Trail,因为这些与其说是程序或 API 问题,不如说是对如何使用 API 的误解
推荐阅读
- azure-cosmosdb - IDocumentQuery.ExecuteNextAsync() 的问题
- mysql - 带有 REGEXP 的 MySQL CASE 语句不起作用
- angular - 打字稿错误 TS1005: '(' 预期
- python - 使用python将md5哈希转换为png文件
- swift - 如何在 Swift 中的每个第 n 个字符处拆分一个字符串?
- php - Laravel:图片未上传
- linux - 为什么mplayer在循环时退出Bash?
- selenium - 量角器以离线模式安装 - webdriver-manager 启动错误 - 我在做什么错
- spring - Spring Boot WebSecurityConfigurerAdapter - 如果输入登录 URL,则重定向
- reporting-services - 如何在 ssrs 报告中生成序列号