运行后没有数据库表内容


package shixun2;

import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;


import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
import javax.swing.table.DefaultTableModel;

public class q extends JFrame implements Runnable {

    private static final long serialVersionUID = 1L;

    // 数据库连接信息
    private static final String DB_URL = "jdbc:mysql://localhost:3306/shixun";
    private static final String DB_USER = "root";
    private static final String DB_PASSWORD = "123456";

    // 表格列名
    private static final String[] COLUMN_NAMES = {"学号", "姓名", "性别", "宿舍号", "宿舍楼", "电话","人员"};

    // UI 组件
    private JTextField textFieldDno = new JTextField();
    private JTextField textFieldName = new JTextField();
    private JTextField textFieldGender = new JTextField();
    private JTextField textFieldFloor = new JTextField();
    private JTextField textFieldPhone = new JTextField();
    private JTextField textFieldAccount = new JTextField();
    private JTextField textFieldPassword = new JTextField();
    private JTable tableAdmins = new JTable(new DefaultTableModel(COLUMN_NAMES, 0));
    private JScrollPane scrollPane = new JScrollPane(tableAdmins);
    
    private JButton buttonUpdate = new JButton("修改");
    
    private JButton buttonQuery = new JButton("查询");

    public q() {
        setTitle("学生住宿管理");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(800, 600);
        setLocationRelativeTo(null);
        setLayout(new BorderLayout());

        // 数据输入面板
        JPanel panelInput = new JPanel(new GridLayout(7, 2));
        panelInput.add(new JLabel("学号:"));
        panelInput.add(textFieldDno);
        
        panelInput.add(new JLabel("宿舍号:"));
        panelInput.add(textFieldFloor);
        panelInput.add(new JLabel("宿舍楼:"));
        panelInput.add(textFieldPhone);
        
        panelInput.add(new JLabel("人员:"));
        panelInput.add(textFieldPassword);

        // 按钮面板
        JPanel panelButtons = new JPanel();
        
        panelButtons.add(buttonUpdate);
        
        panelButtons.add(buttonQuery);

        // 添加组件到窗口
        add(panelInput, BorderLayout.NORTH);
        add(scrollPane, BorderLayout.CENTER);
        add(panelButtons, BorderLayout.SOUTH);

        // 添加事件监听器
       
        buttonUpdate.addActionListener(e -> updateAdmin());
        
        buttonQuery.addActionListener(e -> queryAdmins());
        scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
        scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
        add(scrollPane);
        // 显示窗口
        setVisible(true);
    }

    // 添加管理员信息
    

    // 修改管理员信息
    private void updateAdmin() {
        int selectedRow = tableAdmins.getSelectedRow();
        if (selectedRow == -1) {
            return;
        }

        String dno = textFieldDno.getText().trim();
        String name = textFieldName.getText().trim();
        String gender = textFieldGender.getText().trim();
        String floor = textFieldFloor.getText().trim();
        String phone = textFieldPhone.getText().trim();
        String account = textFieldAccount.getText().trim();
        String password = textFieldPassword.getText().trim();

        if (dno.isEmpty() || name.isEmpty() || gender.isEmpty() || floor.isEmpty() || phone.isEmpty() || account.isEmpty() || password.isEmpty()) {
            return;
        }

        try (Connection conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD);
                PreparedStatement stmt = conn.prepareStatement("UPDATE student SET 姓名=?, 性别=?, 宿舍号=?, 宿舍楼=?, 电话=?, 人员=? WHERE 学号=?")) {
            stmt.setString(1, name);
            stmt.setString(2, gender);
            stmt.setString(3, floor);
            stmt.setString(4, phone);
            stmt.setString(5, account);
            stmt.setString(6, password);
            stmt.setString(7, dno);
            stmt.executeUpdate();
        } catch (SQLException ex) {
            ex.printStackTrace();
        }

        queryAdmins();
    }

    // 删除管理员信息
    
    // 查询管理员信息
    private void queryAdmins() { String dno = textFieldDno.getText().trim(); 
    String name = textFieldName.getText().trim();
    String gender = textFieldGender.getText().trim(); 
    String floor = textFieldFloor.getText().trim();
    String phone = textFieldPhone.getText().trim();
    String d = textFieldPhone.getText().trim();
    String n = textFieldPhone.getText().trim();
    String sql = "SELECT 学号,姓名,性别,student.宿舍号,student.宿舍楼,电话,sushe.宿舍号,sushe.宿舍楼,人员 FROM student join sushe on student.宿舍号=sushe.宿舍楼 where 1=1";
    if (!dno.isEmpty()) {
        sql += " AND 学号=?";
    }
    if (!name.isEmpty()) {
        sql += " AND 姓名=?";
    }
    if (!gender.isEmpty()) {
        sql += " AND 性别=?";
    }
    if (!floor.isEmpty()) {
        sql += " AND 宿舍号=?";
    }
    if (!phone.isEmpty()) {
        sql += " AND 宿舍楼=?";
    }
    if (!d.isEmpty()) {
        sql += " AND 电话=?";
    }
    if (!n.isEmpty()) {
        sql += " AND 人员=?";
    }
    try (Connection conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD);
            PreparedStatement stmt = conn.prepareStatement(sql)) {
        int index = 1;
        if (!dno.isEmpty()) {
            stmt.setString(index++, dno);
        }
        if (!name.isEmpty()) {
            stmt.setString(index++, name);
        }
        if (!gender.isEmpty()) {
            stmt.setString(index++, gender);
        }
        if (!floor.isEmpty()) {
            stmt.setString(index++, floor);
        }
        if (!phone.isEmpty()) {
            stmt.setString(index++, phone);
        }
        if (!d.isEmpty()) {
            stmt.setString(index++, phone);
        }
        if (!n.isEmpty()) {
            stmt.setString(index++, phone);
        }
        ResultSet rs = stmt.executeQuery();
        DefaultTableModel model = (DefaultTableModel) tableAdmins.getModel();
        model.setRowCount(0);
        while (rs.next()) {
            Object[] row = new Object[COLUMN_NAMES.length];
            row[0] = rs.getString("学号");
            row[1] = rs.getString("姓名");
            row[2] = rs.getString("性别");
            row[3] = rs.getString("宿舍号");
            row[4] = rs.getString("宿舍楼");
            row[5] = rs.getString("电话");
            row[6] = rs.getString("人员");
            model.addRow(row);
        }
    } catch (SQLException ex) {
        ex.printStackTrace();
    }
    }

    @Override
    public void run() {
        queryAdmins();
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new q());
    }
}

img

odbc链接的数据库?

添加管理员信息的方法缺失,可以在类中添加以下方法来添加管理员信息:

// 添加管理员信息
private void addAdmin() {
    String dno = textFieldDno.getText().trim();
    String name = textFieldName.getText().trim();
    String gender = textFieldGender.getText().trim();
    String floor = textFieldFloor.getText().trim();
    String phone = textFieldPhone.getText().trim();
    String account = textFieldAccount.getText().trim();
    String password = textFieldPassword.getText().trim();

    if (dno.isEmpty() || name.isEmpty() || gender.isEmpty() || floor.isEmpty()
            || phone.isEmpty() || account.isEmpty() || password.isEmpty()) {
        return;
    }

    try (Connection conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD);
            PreparedStatement stmt = conn.prepareStatement(
                    "INSERT INTO student(学号, 姓名, 性别, 宿舍号, 宿舍楼, 电话, 人员) VALUES (?, ?, ?, ?, ?, ?, ?)")) {
        stmt.setString(1, dno);
        stmt.setString(2, name);
        stmt.setString(3, gender);
        stmt.setString(4, floor);
        stmt.setString(5, phone);
        stmt.setString(6, account);
        stmt.setString(7, password);
        stmt.executeUpdate();
    } catch (SQLException ex) {
        ex.printStackTrace();
    }

    queryAdmins();
}

检查数据库有无数据,没有数据的话新建查询添加:

INSERT INTO student(学号, 姓名, 性别, 宿舍号, 宿舍楼, 电话, 人员) VALUES (?, ?, ?, ?, ?, ?, ?)

还有查询管理员信息的方法中,变量d和n重复使用了textFieldPhone.getText().trim(),其中d应该是电话号码,而n应该是人员信息。建议修改为:

String dno = textFieldDno.getText().trim();
String name = textFieldName.getText().trim();
String gender = textFieldGender.getText().trim();
String floor = textFieldFloor.getText().trim();
String phone = textFieldPhone.getText().trim();
String person = textFieldAccount.getText().trim();
String password = textFieldPassword.getText().trim();

String sql = "SELECT 学号,姓名,性别,student.宿舍号,student.宿舍楼,电话,sushe.宿舍号,sushe.宿舍楼,人员 FROM student join sushe on student.宿舍号=sushe.宿舍楼 where 1=1";

if (!dno.isEmpty()) {
    sql += " AND 学号=?";
}
if (!name.isEmpty()) {
    sql += " AND 姓名=?";
}
if (!gender.isEmpty()) {
    sql += " AND 性别=?";
}
if (!floor.isEmpty()) {
    sql += " AND 宿舍号=?";
}
if (!phone.isEmpty()) {
    sql += " AND 电话=?";
}
if (!person.isEmpty()) {
    sql += " AND 人员=?";
}

try (Connection conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD);
        PreparedStatement stmt = conn.prepareStatement(sql)) {
    int index = 1;
    if (!dno.isEmpty()) {
        stmt.setString(index++, dno);
    }
    if (!name.isEmpty()) {
        stmt.setString(index++, name);
    }
    if (!gender.isEmpty()) {
        stmt.setString(index++, gender);
    }
    if (!floor.isEmpty()) {
        stmt.setString(index++, floor);
    }
    if (!phone.isEmpty()) {
        stmt.setString(index++, phone);
    }
    if (!person.isEmpty()) {
        stmt.setString(index++, person);
    }

    ResultSet rs = stmt.executeQuery();
    DefaultTableModel model = (DefaultTableModel) tableAdmins.getModel();
    model.setRowCount(0);
    while (rs.next()) {
        Object[] row = new Object[COLUMN_NAMES.length];
        row[0] = rs.getString("学号");
        row[1] = rs.getString("姓名");
        row[2] = rs.getString("性别");
        row[3] = rs.getString("宿舍号");
        row[4] = rs.getString("宿舍楼");
        row[5] = rs.getString("电话");
        row[6] = rs.getString("人员");
        model.addRow(row);
    }
} catch (SQLException ex) {
    ex.printStackTrace();
}

最后,如果对你有帮助的话,记得点下采纳,谢谢~