import java.sql.*;
import javax.swing.*;import java.awt.*;
import java.awt.event.*;
public class ShanChu extends JFrame 
{
   private static final int WIDTH=258;
   private static final int HEIGHT=150;
   JButton shanChu;
       public static void main(String args[])
       {
        ShanChu a=new ShanChu();
        a.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        a.show();
       }
       
       public ShanChu()
       {        
       Container con=getContentPane();
       Toolkit kit=this.getToolkit();
       Dimension screenSize=kit.getScreenSize();
       Image image=kit.getImage("image/9.jpg");
       setIconImage(image);
       int width=screenSize.width;
       int height=screenSize.height;
       int x=(width-WIDTH)/2;
       int y=(height-HEIGHT)/2;
       setLocation(x,y);
       this.setSize(WIDTH,HEIGHT);
       setResizable(false);
       shanChu=new JButton("点击->删除");
       ShanChuPanel aaa=new ShanChuPanel();       
       add(aaa,BorderLayout.CENTER);
       //shanChu.setSize(10,5);
       add(shanChu,BorderLayout.SOUTH);
       
       
       } class ShanChuPanel extends JPanel implements ActionListener
 {
  
 
  JLabel qing;
  JTextField xueHaoT;
      public ShanChuPanel()
      {
       qing=new JLabel("请输入您要删除学生记录的学生学号~");
       xueHaoT=new JTextField("",15);       
       add(qing);
       add(xueHaoT);
       
       shanChu.addActionListener(this);
      }
 public void actionPerformed(ActionEvent event)
 {
 
LianJie lianJie=new LianJie();
Connection con=lianJie.getCon();
try
{
Statement sta=con.createStatement();
    String xh=xueHaoT.getText();

   if(xh.equals(""))
  JOptionPane.showMessageDialog(null,"请输入学号!!","错误!",
         JOptionPane.WARNING_MESSAGE,new ImageIcon("image/2.jpg"));
   else
   {
  int i=0;
  ResultSet rs=sta.executeQuery("select * from xs");
  while(rs.next())
  {  

  String XH=rs.getString("学号");
  if(xh.equals(XH))
  {
  String bb="delete from xs where 学号 ='" + xh + "'";
  System.out.println("aaaaaaaa");
   sta.executeUpdate(bb);
  System.out.println("bbbbbbbb");
  i=1;
  }

  }
if(i==0)
JOptionPane.showMessageDialog(null,"没有该项记录!","错误!",
         JOptionPane.WARNING_MESSAGE,new ImageIcon("image/8.jpg"));
   }
}
catch(Exception e)
{
e.printStackTrace();
 JOptionPane.showMessageDialog(null,"数据库操作失败","错误!",
          JOptionPane.WARNING_MESSAGE,new ImageIcon("image/2.jpg"));
}

 }
   
 }
}我用的是eclipse做的,在删除一个记录时,不知道为什么老是弹出对话筐来显示我定义的“数据库操作失败”,其中“aaaaaaaa”和“bbbbbbbbb”也显示出来了(我要删除的那个数据也成功删除),可为什么还有错误呢?错误提示是:java.sql.SQLException: ResultSet is closed
at sun.jdbc.odbc.JdbcOdbcResultSet.checkOpen(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcResultSet.next(Unknown Source)
at ShanChu$ShanChuPanel.actionPerformed(ShanChu.java:75)
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.pumpOneEventForHierarchy(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)
请大哥们给找找原因

解决方案 »

  1.   

    ResultSet rs=sta.executeQuery("select * from xs");while(rs.next())
    { .....
      System.out.println("aaaaaaaa");
      
      sta.executeUpdate(bb); //问题出在这里,当找到要删除的记录时,就把它删了,下次再while(rs.next())是,就不是原来的sta了。这个地方应该另外搞一个Statement
      System.out.println("bbbbbbbb");
      .....
    }~~~~~~~~~~~~~~~~~~~~~~~~~~~`
    删除记录之前,不用先查询,直接删即可。
      

  2.   

    ResultSet rs=sta.executeQuery("select * from xs");
                       while(rs.next())    
                       {  
                       XH=rs.getString("学号");            
                         if(xh.equals(XH))  
                         {                        
                        try
                        {                  
                        zy=(String)zhuanYeT.getSelectedItem(); 
                            String sb="update xs set 姓名='" + xm + "',性别='" + xb + "',学分='" + xf + "',专业='" + zy + "',备注='" + bz + "',出生时间='" + rq + "' where 学号=xh";
                            System.out.println("bbbbbbb");
                               sta.executeUpdate(sb);
                               System.out.println("aaaaaaa");
                           JOptionPane.showMessageDialog(null,"数据修改成功!!","成功!",
                            JOptionPane.WARNING_MESSAGE,new ImageIcon("image/2.jpg"));
                           a=1;
                           break;
                        }
                        catch(Exception e)
                        {
                        JOptionPane.showMessageDialog(null,"数据修改时出现错误!!!"
                        ,"错误!",JOptionPane.WARNING_MESSAGE,new ImageIcon("image/1.jpg"));  
                        }
                        
                         }                     
                       }
    这个呢,这个只运行到输出“bbbbbbb”没有输出“aaaaaa”这个怎么个改?
      

  3.   

    ......"' where 学号=xh";~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    删除记录、修改记录,为什么要先查询呢?服务器不够忙?时间多得用不完?
      

  4.   

    上一贴不是已经告诉你了吗?
    ......"' where 学号=xh;   -->  ......"' where 学号='" + xh + "'"
      

  5.   

    还有记住,update是也要再搞一个Statement,不然还出delete时的现象。