关于SQLException异常

shedanling 2009-12-07 12:38:37
只是一个小程序,删除数据库中的数据,但是运行时却遇到了这样的一个异常:
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();
}
}
}

}

}
希望前辈们赐教~~
...全文
843 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
invoked 2009-12-07
  • 打赏
  • 举报
回复
把这行

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

换成这行试试

Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");

zl3450341 2009-12-07
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 shedanling 的回复:]
这是引入jar包,不过为什么用odbc数据源就会错误呢?
想不通~~
[/Quote]
那你的意思是
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");

用这个就不出错了?
shedanling 2009-12-07
  • 打赏
  • 举报
回复
这是引入jar包,不过为什么用odbc数据源就会错误呢?
想不通~~

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧