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)
请大哥们给找找原因
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)
请大哥们给找找原因
{ .....
System.out.println("aaaaaaaa");
sta.executeUpdate(bb); //问题出在这里,当找到要删除的记录时,就把它删了,下次再while(rs.next())是,就不是原来的sta了。这个地方应该另外搞一个Statement
System.out.println("bbbbbbbb");
.....
}~~~~~~~~~~~~~~~~~~~~~~~~~~~`
删除记录之前,不用先查询,直接删即可。
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”这个怎么个改?
删除记录、修改记录,为什么要先查询呢?服务器不够忙?时间多得用不完?
......"' where 学号=xh; --> ......"' where 学号='" + xh + "'"