时隔多年,我又有了新的课设任务,还是最原始的基于swing的管理系统(前几天还做了个纯控制台打印的,人给做麻了,忘记放上来了,明天放,至少记录一下废物工作日常)。
先放项目目录,我的代码不正规也不简洁,主打一个冗余但自己能看懂,希望代码警察不要审判我。
环境配置
IDEA里自带了swing插件,新建一个项目,然后new一个GUI窗体就好了,或者自己纯写界面也可以,我瞎写的,我没有审美,我还懒,不乐意用插件。
然后把jdbc的包放进lib文件夹里:
环境也就配置好了 。
JDBC连接mysql
public DBOper() {
try {
// 连接数据库
String url = "jdbc:mysql://localhost:3306/test";
String username = "root";
String password = "123456";
connection = DriverManager.getConnection(url, username, password);
} catch (SQLException e) {
e.printStackTrace();
}
}
mysql中建表
CREATE TABLE students (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100),
age INT,
gender VARCHAR(10)
);
所有代码
dao层,直接对数据库进行操作,这里我没有封装。
package dao;
import javax.swing.*;
import java.sql.*;
public class DBOper {
private Connection connection;
public DBOper() {
try {
// 连接数据库
String url = "jdbc:mysql://localhost:3306/test";
String username = "root";
String password = "123456";
connection = DriverManager.getConnection(url, username, password);
} catch (SQLException e) {
e.printStackTrace();
}
}
public void addStudent(String name, int age, String gender) {
String query = "INSERT INTO students (name, age, gender) VALUES (?, ?, ?)";
try (PreparedStatement statement = connection.prepareStatement(query)) {
System.out.println("添加成功!"+name+age+gender);
statement.setString(1, name);
statement.setInt(2, age);
statement.setString(3, gender);
JOptionPane.showMessageDialog(null, "添加成功!", "成功", JOptionPane.INFORMATION_MESSAGE);
statement.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}
public void updateStudent(int id, String name, int age, String gender) {
String query = "UPDATE students SET name = ?, age = ? , gender = ? WHERE id = ?";
try (PreparedStatement statement = connection.prepareStatement(query)) {
statement.setString(1, name);
statement.setInt(2, age);
statement.setString(3, gender);
statement.setInt(4, id);
JOptionPane.showMessageDialog(null, "修改成功!", "成功", JOptionPane.INFORMATION_MESSAGE);
statement.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}
public void deleteStudent(int id) {
String query = "DELETE FROM students WHERE id = ?";
try (PreparedStatement statement = connection.prepareStatement(query)) {
statement.setInt(1, id);
// int x;
statement.executeUpdate();
// x = statement.executeUpdate();
// System.out.println("xxxxxx"+x);
} catch (SQLException e) {
e.printStackTrace();
}
}
public Object[][] getAllStudents() {
Statement stmt = null;
ResultSet rs = null;
Object[][] result = null;
try {
stmt = connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
rs = stmt.executeQuery("SELECT * FROM students");
// 获取 ResultSet 的行数
rs.last();
int rowCount = rs.getRow();
// 将 ResultSet 指针移到第一行
rs.beforeFirst();
// 初始化结果数组
result = new Object[rowCount][4];
// 遍历 ResultSet 并填充结果数组
int i = 0;
while (rs.next()) {
result[i][0] = rs.getInt(1); // ID
result[i][1] = rs.getString(2); // name
result[i][2] = rs.getInt(3); // age
result[i][3] = rs.getString(4); // gender
i++;
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (rs != null) {
rs.close();
}
if (stmt != null) {
stmt.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
return result;
}
public Object[][] searchById(int id) {
try {
String query = "SELECT * FROM students WHERE id = ?";
PreparedStatement statement = connection.prepareStatement(query, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
statement.setInt(1, id);
ResultSet resultSet = statement.executeQuery();
if(resultSet==null){
JOptionPane.showMessageDialog(null, "当前查