package text6; import java.sql.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class domo extends JFrame implements ActionListener{ Connection con; Statement cmd; ResultSet rs; String url="jdbc:mysql://127.0.0.1:3306/support"; String driver="com.mysql.jdbc.Driver"; JPanel jp1=new JPanel(); JPanel jp2=new JPanel(); JLabel lbl_no=new JLabel("学号"); JLabel lbl_name=new JLabel("姓名"); JLabel lbl_birth=new JLabel("生日"); JLabel lbl_sex=new JLabel("性别"); JLabel lbl_study=new JLabel("学情"); JLabel lbl_live=new JLabel("宿舍"); JTextField txt_no=new JTextField(20); JTextField txt_name=new JTextField(20); JTextField txt_birth=new JTextField(20); JTextField txt_sex=new JTextField(20); JTextField txt_study=new JTextField(20); JTextField txt_live=new JTextField(20); JButton btn_add=new JButton("新增"); JButton btn_delete=new JButton("删除"); JButton btn_update=new JButton("更新"); public domo(){ jp1.add(lbl_no); jp1.add(txt_no); jp1.add(lbl_name); jp1.add(txt_name); jp1.add(lbl_birth); jp1.add(txt_birth); jp1.add(lbl_sex); jp1.add(txt_sex); jp1.add(lbl_study); jp1.add(txt_study); jp1.add(lbl_live); jp1.add(txt_live); add(jp1,BorderLayout.CENTER); jp2.add(btn_add); jp2.add(btn_delete); jp2.add(btn_update); add(jp2,BorderLayout.SOUTH); btn_add.addActionListener(this); btn_delete.addActionListener(this); btn_update.addActionListener(this); setBounds(250,250,250,250); setVisible(true); setDefaultCloseOperation(DISPOSE_ON_CLOSE); } public void actionPerformed(ActionEvent e) { if(btn_add.isSelected()) { try { Class.forName(driver); con=DriverManager.getConnection(url,"root",""); cmd=con.createStatement(); String sql="select * from student where sno='" + txt_no.getText() + "'";//查看是否存在已有的uno rs=cmd.executeQuery(sql); if(rs.next()) if(rs.getString(1).equals(txt_no.getText())==false) JOptionPane.showMessageDialog(null, "成功","成功",JOptionPane.PLAIN_MESSAGE); con.close(); }catch(Exception e1) { System.out.print(e1); } } } public static void main(String args[]) { JFrame.setDefaultLookAndFeelDecorated(true); new domo(); } }改错
时间: 2024-03-19 21:40:41 浏览: 147
1. 按钮的判断应该使用 `if(e.getSource() == btn_add)`,而不是 `if(btn_add.isSelected())`。
2. 在查询语句中应该使用 `where sno='" + txt_no.getText() + "'"`,而不是 `where uno='" + txt_no.getText() + "'"`。
3. 在成功提示框中,应该显示“成功”,而不是“失败”。
4. 在异常处理中,应该使用 `e1.printStackTrace()`,而不是 `System.out.print(e1)`。
5. 在按钮的事件处理中,应该加入删除和更新按钮的处理代码。
相关问题
package DMS.SYSTEM; import DMS.GetConnection; import DMS.Users; import javax.swing.*; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableRowSorter; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.sql.*; /**学生缺寝 * @author LQ * @create */ public class CooBuilding extends JPanel implements ActionListener { Connection connection = new GetConnection().GetConnection(); int type; Users user; JTable table = new JTable(); //JButton button = new JButton(""); String[] col = {"楼名", "层数", "管理人","容纳人数"}; DefaultTableModel mm = new DefaultTableModel(col, 0); // 定义一个表的模板 JLabel Bname,Bfloor,Bmager,Bcap,SP; JTextField BnameText,BfloorText,BmagerText,BcapText; JButton seek, add, delete, edit; JPanel student; public CooBuilding(int type, Users user) { this.user = user; this.type = type; setLayout(new FlowLayout());//整个采用流动式布局 很好的适应了表格带来的影响 table.setModel(mm); table.setRowSorter(new TableRowSorter<>(mm)); JScrollPane js = new JScrollPane(table); add(js); search(); }
这段代码是一个 Java 类,名为 CooBuilding,继承自 JPanel 类,并且实现了 ActionListener 接口。这个类主要是用来显示一个包含建筑物信息的表格,并且可以对这个表格进行增删改查的操作。其中,变量 type 表示用户的类型,变量 user 表示当前用户的信息,变量 table 表示显示建筑物信息的表格实例,变量 mm 表示表格的数据模型,变量 col 表示表格的列名,变量 connection 表示数据库连接对象。这个类的构造函数接受两个参数,分别表示用户类型和用户信息,并且在构造函数中调用了 search() 方法来初始化表格的数据。这个类还包含了若干个标签、文本框和按钮,用于对表格进行增删改查的操作。
package package06; import java.awt.; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.sql.; import javax.swing.*; public class Java6 extends JFrame { JLabel wenzi; JTextField shuru; JButton chaxun; JTextArea fanhui; public Java6(){ super("中英查询软件"); // 窗口添加pNorth 在北面区域 add(getNorthPanel(),BorderLayout.NORTH); } private JPanel getNorthPanel() { JPanel panel = new JPanel(); wenzi = new JLabel("请输入要查询的单词:"); shuru=new JTextField(8); chaxun=new JButton("查询"); fanhui =new JTextArea(6,25); panel.add(wenzi,new FlowLayout()); panel.add(shuru,new FlowLayout()); panel.add(chaxun,new FlowLayout()); panel.add(fanhui,new FlowLayout()); return panel; } public static void main(String[] args) throws Exception{ Java6 zy=new Java6(); zy.setBounds(100, 100, 340, 170); zy.setVisible(true); zy.setDefaultCloseOperation(zy.EXIT_ON_CLOSE); Class.forName("com.mysql.cj.jdbc.Driver"); //加载MySQL的驱动类 String ur1="jdbc:mysql://localhost:3306/java实训"; String user="root"; String password="root"; try { Connection Con =DriverManager.getConnection(ur1,user,password); System.out.println("eeeeee"); } catch (Exception e) { // TODO: handle exception System.out.println("ww"); } } }这些代码连接不了数据库,是哪里错误了吗?
代码中没有执行具体的 SQL 操作,只是打印了一些信息,因此连接不成功并不会报错。如果要执行 SQL 操作,需要使用 Statement 或 PreparedStatement 对象。此外,建议将连接数据库的代码放在查询按钮的 ActionListener 中执行,而不是在 main 方法中执行。以下是一个参考代码:
```java
package package06;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.*;
import javax.swing.*;
public class Java6 extends JFrame {
JLabel wenzi;
JTextField shuru;
JButton chaxun;
JTextArea fanhui;
public Java6() {
super("中英查询软件");
add(getNorthPanel(), BorderLayout.NORTH);
}
private JPanel getNorthPanel() {
JPanel panel = new JPanel();
wenzi = new JLabel("请输入要查询的单词:");
shuru = new JTextField(8);
chaxun = new JButton("查询");
fanhui = new JTextArea(6, 25);
panel.add(wenzi, new FlowLayout());
panel.add(shuru, new FlowLayout());
panel.add(chaxun, new FlowLayout());
panel.add(fanhui, new FlowLayout());
chaxun.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String word = shuru.getText().trim();
if (word.isEmpty()) {
JOptionPane.showMessageDialog(null, "请输入单词");
return;
}
String url = "jdbc:mysql://localhost:3306/java实训";
String user = "root";
String password = "root";
try (Connection conn = DriverManager.getConnection(url, user, password)) {
String sql = "SELECT * FROM words WHERE word = ?";
try (PreparedStatement stmt = conn.prepareStatement(sql)) {
stmt.setString(1, word);
try (ResultSet rs = stmt.executeQuery()) {
if (rs.next()) {
String meaning = rs.getString("meaning");
fanhui.setText(meaning);
} else {
fanhui.setText("未找到该单词");
}
}
}
} catch (SQLException ex) {
ex.printStackTrace();
JOptionPane.showMessageDialog(null, "数据库连接错误");
}
}
});
return panel;
}
public static void main(String[] args) throws Exception {
Java6 zy = new Java6();
zy.setBounds(100, 100, 340, 170);
zy.setVisible(true);
zy.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
```
注意:这只是一个参考代码,具体实现可能需要根据实际需求进行修改。另外,建议在使用完 Connection、Statement 或 ResultSet 等对象后及时关闭,可以使用 try-with-resources 语句来自动关闭。
阅读全文