我应该最后在尝试捕获块中放入 connection.close()吗?我尝试放入connection.close(),但出现错误“ java.lang.NullPointerException ”
这是登录代码,是否可以在每个语句中放入 rs.close()和pst.close(),如下所示,如果没有弹出内容,我会插入它,因为就像数据库被锁定了。
登录
if(evt.getKeyCode()==KeyEvent.VK_ENTER){
String sql = "select * from User_Table\n" +
"inner join Role_Table on User_Table.Role_ID=Role_Table.Role_ID\n" +
"where Username = ? and Password = ? and Role_Name = ?";
try {
pst = conn.prepareStatement(sql);
pst.setString(1, jTextField1.getText());
pst.setString(2, jPasswordField1.getText());
pst.setString(3, (String) RoleComboBox.getSelectedItem());
rs=pst.executeQuery();
if(rs.next()){
String A = rs.getString("First_Name");
String B = rs.getString("Role_Name");
if(RoleComboBox.getSelectedItem().toString().equals("Admin")){
JOptionPane.showMessageDialog(null, "Hello "+B+" "+A,"Successfully Login",JOptionPane.INFORMATION_MESSAGE);
rs.close();
pst.close();
AdminPortal AP = new AdminPortal();
AP.setVisible(true);
this.dispose();
.... //and so on
}else if(RoleComboBox.getSelectedItem().toString().equals("Laboratorist,EO")){
JOptionPane.showMessageDialog(null, "Successfully Login");
rs.close();
pst.close();
}}
else{
JOptionPane.showMessageDialog(null, "Incorrect Input","Error",JOptionPane.ERROR_MESSAGE);
}
}catch(Exception e){
JOptionPane.showMessageDialog(null, e);
}finally {
try {
rs.close();
pst.close();
conn.close();
}catch(Exception e){
}
}
}
这是注销的代码,当我没有放置 con.close()时,我的系统运行正常,但是当我注销并再次登录时,它开始出现一些错误,例如数据库已锁定但是当我放入 con.close()” 时,出现了一些错误“ java.lang.NullPointerException ”
注销
int YesOrNo = JOptionPane.showConfirmDialog(null, "Do you want to logout?", "Logout",JOptionPane.YES_NO_OPTION);
if(YesOrNo == 0){
try {
dispose();
LoginForm LF = new LoginForm ();
LF.setVisible(true);
AddPatient.getObj().dispose();
AddAppointments.getObj().dispose();
} catch (Exception ex) {
}finally{
try{
rs.close();
pst.close();
conn.close();
}catch(Exception e){
}
}
}else{
}
我希望有人可以帮助
答案 0 :(得分:0)
如果您不再使用该连接,则可以在finally块上将其关闭。
答案 1 :(得分:0)
是的,所有类型的连接都应在finally块中关闭。