只是一个小程序,删除数据库中的数据,但是运行时却遇到了这样的一个异常:
java.sql.SQLException: [Microsoft][ODBC SQL Server Driver]连接占线导致另一个 hstmt
at sun.jdbc.odbc.JdbcOdbc.createSQLException(Unknown Source)
at sun.jdbc.odbc.JdbcOdbc.standardError(Unknown Source)
at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcStatement.execute(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcStatement.executeUpdate(Unknown Source)
at Delete_PersonalInf$Delete_adapter.actionPerformed(Delete_PersonalInf.java:90)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
java.sql.SQLException: ResultSet is closed
at sun.jdbc.odbc.JdbcOdbcResultSet.checkOpen(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcResultSet.clearWarnings(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcResultSet.close(Unknown Source)
at Delete_PersonalInf$Delete_adapter.actionPerformed(Delete_PersonalInf.java:104)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
程序源代码如下:
import javax.swing.*;import java.awt.*;
import java.awt.event.*;
import java.sql.*;
public class Delete_PersonalInf extends JFrame{
   public static void main(String []args){
   new Delete_PersonalInf();
   }
   Statement st1,st2,st3;
   ResultSet rs1;
   Connection con;
   JLabel label = new JLabel();
   JLabel Name_label = new JLabel();//姓名标签
   JLabel ID_label = new JLabel();//申请ID标签
  
   JTextField Name_text = new JTextField();//姓名文本框
   JTextField ID_text = new JTextField();//申请ID文本框
   
   JButton Delete_button = new JButton();//修改按钮
   
   public Delete_PersonalInf(){
   try{
   Init();
   }catch(Exception e){
     e.printStackTrace();
   }
   }
   private void Init(){
   
    this.setForeground(Color.black);
    this.setResizable(false);
    this.setState(Frame.NORMAL);
    this.setTitle("删除个人资料");
    this.getContentPane().setLayout(null);
    this.setBounds(100,100,300,320);
    this.setVisible(true);
    
   label.setFont(new java.awt.Font("TimesRoman", Font.BOLD, 22));
   label.setText("删除个人资料");
   label.setBounds(new Rectangle(80,10,200,20));
   
   Name_label.setFont(new java.awt.Font("Dialog",0,15));
   Name_label.setText("姓名");
   Name_label.setBounds(new Rectangle(10,60,60,30));
   Name_text.setBounds(new Rectangle(80,60,120,30));
   
   ID_label.setFont(new java.awt.Font("Dialog",0,15));
   ID_label.setText("申请ID");
   ID_label.setBounds(new Rectangle(10,110,60,30));
   ID_text.setBounds(new Rectangle(80,110,200,30));
   
   
   
   Delete_button.setFont(new java.awt.Font("Dialog",0,16));
   Delete_button.setText("删除");
   Delete_button.setBounds(new Rectangle(90,180,80,40));
   Delete_button.addActionListener(new Delete_adapter());
   this.getContentPane().add(label, null);
   this.getContentPane().add(Name_label, null);
   this.getContentPane().add(Name_text, null);
   this.getContentPane().add(ID_label, null);
   this.getContentPane().add(ID_text, null);
  
   
   this.getContentPane().add(Delete_button,null);
   }
   class Delete_adapter implements ActionListener{ public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}catch(ClassNotFoundException e){
JOptionPane.showMessageDialog(null, "找不到数据类");
}
try{
con = DriverManager.getConnection("jdbc:odbc:项目申报");
st1 = con.createStatement();
    rs1 = st1.executeQuery("select * from tb_PersonalInf where Person_ID='"+ID_text.getText().trim()+"'");
    if(!rs1.next()){
     JOptionPane.showMessageDialog(null, "输入有误,请重新输入!");
    }else{
     int v=JOptionPane.showConfirmDialog(null,"确定删除吗?","用户确认",//弹出对话框,确认用户是否要删除
                 JOptionPane.OK_CANCEL_OPTION);
     if(v==JOptionPane.OK_OPTION){
                  st2 = con.createStatement();
                 
                  st2.executeUpdate("delete from tb_PersonalInf where Person_ID='"+ID_text.getText().trim()+"'");
                  JOptionPane.showMessageDialog(null, "删除成功!");
                  }
    }
    }catch(SQLException e){
     e.printStackTrace();
     JOptionPane.showMessageDialog(null, "数据库操作有误!");
    }finally{
     try{
     st1.close();st2.close();
     rs1.close();
     con.close();
     }catch(Exception e){
     e.printStackTrace();
     }
    }
}
   
   }
   
}
希望前辈们赐教~~