public void actionPerformed(ActionEvent e) { if (e.getSource() == delete){ try { PreparedStatement statement = connection.prepareStatement("DELETE FROM ade WHERE remark=" + "'" + DnoText.getText() + "'"); statement.executeUpdate(); PreparedStatement state = connection.prepareStatement("select*from ade"); ResultSet resultSet = state.executeQuery(); while (mm.getRowCount() > 0) {//把表格进行刷新,下次显示的时候重头开始显示 //System.out.println(model.getRowCount()); mm.removeRow(mm.getRowCount() - 1); } while (resultSet.next()) { String Sno=resultSet.getString(1); String Sname=resultSet.getString(2); String Ssex=resultSet.getString(3); String Sdept=resultSet.getString(4); String Dno=resultSet.getString(5); String[] data={Sno,Sname,Ssex,Sdept,Dno}; mm.addRow(data); } } catch (SQLException e1) { e1.printStackTrace(); } JOptionPane.showMessageDialog(this, "删除成功"); }
时间: 2024-02-14 12:35:36 浏览: 88
这段代码是一个事件处理方法actionPerformed,当delete按钮被点击时,会执行该方法。该方法的主要功能是从数据库中删除一条remark为用户输入的DnoText文本框中的值的数据,并且更新显示在表格中的数据。具体的实现步骤如下:
1. 获取用户输入的DnoText文本框中的值,并且使用该值作为删除的条件,从ade表中删除相应数据。
2. 使用PreparedStatement对象执行SQL语句,具体为DELETE FROM ade WHERE remark=用户输入的DnoText文本框中的值。
3. 使用PreparedStatement对象执行更新操作,具体为statement.executeUpdate()。
4. 查询ade表中的数据,并且使用ResultSet对象获取相应的数据。
5. 清空表格中的数据。
6. 将ResultSet对象中的数据逐行读取,并且将数据添加到表格中。
7. 若删除操作成功,弹出删除成功的提示框。
需要注意的是,该段代码中存在SQL注入漏洞,因为用户输入的DnoText文本框中的值直接拼接到SQL语句中,可能会被恶意用户利用。应该使用参数化查询来避免该问题。
相关问题
逐句分析 public void actionPerformed(ActionEvent e) { if(e.getSource()==submit){ //这就是宿管添加晚归记录的功能 try { PreparedStatement statement = connection.prepareStatement("insert into absent values(?,?,?,?,?)"); statement.setString(1, SnoText.getText()); statement.setString(2, SnameText.getText()); statement.setString(3, DnoText.getText()); statement.setString(4, AtimeText.getText()); statement.setString(5, AreasonText.getText()); statement.executeUpdate(); PreparedStatement state=connection.prepareStatement("select*from absent"); ResultSet resultSet = state.executeQuery(); while(a.getRowCount()>0){//把表格进行刷新,下次显示的时候重头开始显示 a.removeRow(a.getRowCount()-1); }
这是一个 Java 中的方法,名为 actionPerformed,接收一个 ActionEvent 类型的参数 e。该方法的访问权限为 public,表示在程序中任何地方都可以调用它。
在方法内部,通过判断事件源是否为 submit 按钮来执行宿管添加晚归记录的功能。如果是,则创建一个 PreparedStatement 对象,用于向数据库中插入数据,插入的数据包括五个字段的值,分别是 SnoText、SnameText、DnoText、AtimeText、AreasonText 的文本值。插入数据后,再创建一个 PreparedStatement 对象,用于查询数据库中的数据,并将查询结果存储在 ResultSet 对象中。接下来,通过 while 循环遍历表格 a 中的所有行,逐一删除,以便在下次显示时重新加载数据。整个方法的功能是向数据库中添加晚归记录,并刷新表格以显示最新的数据。
JTextArea ta = new JTextArea(); JTextField txt = new JTextField(10);JFrame jf = new JFrame("功能界面"); jf.setBounds(0, 0, 700, 600); jf.setVisible(true); jf.setLayout(null); jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JButton b1 = new JButton("图书入库"); b1.setBounds(20, 90, 150, 80); JButton b2 = new JButton("图书查询"); b2.setBounds(20, 210, 150, 80); JButton b3 = new JButton("图书修改"); b3.setBounds(500, 90, 150, 80); JButton b5 = new JButton("办理借阅证登记"); b5.setBounds(20, 330, 150, 80); JButton b6 = new JButton("图书借阅管理"); b6.setBounds(500, 210, 150, 80); JButton b4 = new JButton("图书删除"); b4.setBounds(500, 330, 150, 80); JButton b7 = new JButton("退出系统"); b7.setBounds(560, 20, 90, 30); ta.setBounds(190, 90, 290, 320); txt.setBounds(120,450,300,30); JButton b8 = new JButton("确定"); b8.setBounds(440,450,70,30); JMenuBar menuBar = new JMenuBar(); JMenu menuManage = new JMenu("图书管理"); JMenu menuAbout = new JMenu("关于系统"); JMenuItem item1 = new JMenuItem("图书列表"); menuManage.add(item1); item1.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { JFrame frame = new JFrame("图书列表"); frame.setSize(600, 400); frame.setLocationRelativeTo(null); ListPanel listPanel = new ListPanel(); frame.add(listPanel); frame.setVisible(true); } }); ActionListener act = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { if(e.getSource().equals(b1)) { insertNewbook(); }else if(e.getSource().equals(b3)) { updatebook(); }else if(e.getSource().equals(b4)) { ta.setText("请输入要删除的图书编号:\n"); String bid = txt.getText(); if(bid!=null && !bid.trim().equals("")) { ta.append(bid+"\n"); if(dbDao.delelteBook(bid)){ System.out.print("啥"+bid); int user = JOptionPane.showConfirmDialog(null, "图书删除成功","提示",JOptionPane.YES_NO_OPTION); }else{ int user = JOptionPane.showConfirmDialog(null, "图书删除失败","提示",JOptionPane.YES_NO_OPTION); } }else { ta.append("消息不能为空"+"\n"); } }public boolean delelteBook(String bid){ boolean flag=false; PreparedStatement pstmt=null; String sql="DELETE FROM booklist WHERE bid=?"; try{ pstmt=conn.prepareStatement(sql); pstmt.setString(1, bid); if (pstmt.executeUpdate() > 0) { flag = true; } } catch (SQLException e) { e.printStackTrace(); } finally { try { pstmt.close(); } catch (SQLException e) { e.printStackTrace(); } } return flag; }这是我的部分代码,我想要获取我输入的bid,调用删除图书方法后弹窗显示删除成功,但是出错了,请帮我改一下
在你的代码中,存在以下问题:
1. 删除图书方法的实现需要获取数据库连接对象,但是在代码中没有展示如何获取该连接对象。
2. 在删除图书方法中,应该将PreparedStatement对象声明在try语句块内,并在finally语句块中关闭该对象。
3. 在删除图书方法中,应该将ResultSet对象声明在try语句块内,并在finally语句块中关闭该对象。
4. 在删除图书方法中,应该将Connection对象声明在try语句块内,并在finally语句块中关闭该对象。
5. 在删除图书方法中,应该将PreparedStatement对象的执行结果作为返回值返回。
以下是修改后的代码:
```
JTextArea ta = new JTextArea();
JTextField txt = new JTextField(10);
JFrame jf = new JFrame("功能界面");
jf.setBounds(0, 0, 700, 600);
jf.setVisible(true);
jf.setLayout(null);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JButton b1 = new JButton("图书入库");
b1.setBounds(20, 90, 150, 80);
JButton b2 = new JButton("图书查询");
b2.setBounds(20, 210, 150, 80);
JButton b3 = new JButton("图书修改");
b3.setBounds(500, 90, 150, 80);
JButton b5 = new JButton("办理借阅证登记");
b5.setBounds(20, 330, 150, 80);
JButton b6 = new JButton("图书借阅管理");
b6.setBounds(500, 210, 150, 80);
JButton b4 = new JButton("图书删除");
b4.setBounds(500, 330, 150, 80);
JButton b7 = new JButton("退出系统");
b7.setBounds(560, 20, 90, 30);
ta.setBounds(190, 90, 290, 320);
txt.setBounds(120,450,300,30);
JButton b8 = new JButton("确定");
b8.setBounds(440,450,70,30);
JMenuBar menuBar = new JMenuBar();
JMenu menuManage = new JMenu("图书管理");
JMenu menuAbout = new JMenu("关于系统");
JMenuItem item1 = new JMenuItem("图书列表");
menuManage.add(item1);
item1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JFrame frame = new JFrame("图书列表");
frame.setSize(600, 400);
frame.setLocationRelativeTo(null);
ListPanel listPanel = new ListPanel();
frame.add(listPanel);
frame.setVisible(true);
}
});
ActionListener act = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource().equals(b1)) {
insertNewbook();
}else if(e.getSource().equals(b3)) {
updatebook();
}else if(e.getSource().equals(b4)) {
ta.setText("请输入要删除的图书编号:\n");
String bid = txt.getText();
if(bid!=null && !bid.trim().equals("")) {
ta.append(bid+"\n");
if(deleteBook(bid)){
int user = JOptionPane.showConfirmDialog(null, "图书删除成功","提示",JOptionPane.YES_NO_OPTION);
}else{
int user = JOptionPane.showConfirmDialog(null, "图书删除失败","提示",JOptionPane.YES_NO_OPTION);
}
}else {
ta.append("消息不能为空"+"\n");
}
}
}
};
public boolean deleteBook(String bid) {
boolean flag=false;
Connection conn=null;
PreparedStatement pstmt=null;
ResultSet rs = null;
try{
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "123456");
String sql="DELETE FROM booklist WHERE bid=?";
pstmt=conn.prepareStatement(sql);
pstmt.setString(1, bid);
flag = pstmt.executeUpdate() > 0;
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (rs != null) {
rs.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if (pstmt != null) {
pstmt.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
return flag;
}
```
阅读全文