功能演示
代码
AddStudentGUI 类
package com.nicebao.gui;
import com.nicebao.info.Student;
import com.nicebao.jdbc.StudentDAO;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.SQLException;
public class AddStudentGUI extends JFrame {
private JTextField studentIdField, nameField, genderField, birthdateField, addressField, phoneNumberField;
private JRadioButton maleRadioButton, femaleRadioButton;
public AddStudentGUI() {
setTitle("学生-新增");
setSize(400, 400);
setLocationRelativeTo(null);
JPanel panel = new JPanel(new GridLayout(7, 2));
JLabel studentIdLabel = new JLabel("学号:");
studentIdField = new JTextField();
panel.add(studentIdLabel);
panel.add(studentIdField);
JLabel nameLabel = new JLabel("姓名:");
nameField = new JTextField();
panel.add(nameLabel);
panel.add(nameField);
// 创建单选按钮组
JLabel genderLabel = new JLabel("性别:");
ButtonGroup genderGroup = new ButtonGroup();
//添加男女的选项
JPanel genderPanel = new JPanel(new GridLayout(1, 2));
maleRadioButton = new JRadioButton("男");
femaleRadioButton = new JRadioButton("女");
genderGroup.add(maleRadioButton);
genderGroup.add(femaleRadioButton);
genderPanel.add(maleRadioButton);
genderPanel.add(femaleRadioButton);
panel.add(genderLabel);
panel.add(genderPanel); // 将性别选项添加到主面板中
JLabel birthdateLabel = new JLabel("生日:(输入格式 -> 年/月/日)");
birthdateField = new JTextField();
panel.add(birthdateLabel);
panel.add(birthdateField);
JLabel addressLabel = new JLabel("住址:");
addressField = new JTextField();
panel.add(addressLabel);
panel.add(addressField);
JLabel phoneNumberLabel = new JLabel("手机号:");
phoneNumberField = new JTextField();
panel.add(phoneNumberLabel);
panel.add(phoneNumberField);
JButton confirmBtn = getjButton();
JButton cancelBtn = new JButton("取消");
cancelBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
dispose(); // 关闭窗口
}
});
panel.add(confirmBtn);
panel.add(cancelBtn);
add(panel);
}
private JButton getjButton() {
JButton confirmBtn = new JButton("提交");
confirmBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
StudentDAO studentDAO = new StudentDAO();
// 获取用户输入的信息
//处理学号非数字问题
long studentId;
if(studentDAO.isNumber(studentIdField.getText())){
studentId = Long.parseLong(studentIdField.getText());
}else{
JOptionPane.showMessageDialog(null, "学号只可输入数字", "错误", JOptionPane.ERROR_MESSAGE);
return;
}
String name = nameField.getText();
String gender ;
if (maleRadioButton.isSelected()) {
gender = "男";
} else if (femaleRadioButton.isSelected()) {
gender = "女";
} else {
gender = "";
}
//处理日期格式错误输入问题
String birthdate = Student.fixBirthdate(birthdateField.getText());
String address = addressField.getText();
String phoneNumber = phoneNumberField.getText();
// 创建学生对象
Student student = new Student(studentId, name, gender, birthdate, address, phoneNumber);
// 调用StudentDAO来添加学生信息到数据库
try {
studentDAO.addStudent(student);
} catch (SQLException ex) {
throw new RuntimeException(ex);
}
JOptionPane.showMessageDialog(null, "添加成功");
// 清空文本框
studentIdField.setText("");
nameField.setText("");
birthdateField.setText("");
addressField.setText("");
phoneNumberField.setText("");
}
});
return confirmBtn;
}
}
MainGUI类
package com.nicebao.gui;
import com.nicebao.jdbc.StudentDAO;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* @author IhaveBB
*/
public class MainGUI extends JFrame {
private StudentDAO studentDAO;
private JLabel timeLabel;
private JButton addStudentBtn;
private JButton manageStudentBtn;
private JButton exportBtn;
private JButton importBtn;
private JLabel info;
public MainGUI() {
setTitle("学生管理系统");
setSize(500, 300);
setLocationRelativeTo(null);
getContentPane().setBackground(Color.LIGHT_GRAY);
JPanel panel = new JPanel(new GridLayout(3, 2, 5, 5));
//存放时间面板
timeLabel = new JLabel();
info = new JLabel();
info.setText("欢迎您登陆本系统,当前时间为");
//计时器
Timer timer = new Timer(1000,new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
SimpleDateFormat timeFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date curTime = new Date();
String formattedTime = timeFormat.format(curTime);
timeLabel.setText(formattedTime);
}
});
timer.start();
addStudentBtn = new JButton("添加学生");
addStudentBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
AddStudentGUI addStudentGUI = new AddStudentGUI();
addStudentGUI.setVisible(true);
}
});
manageStudentBtn = new JButton("管理学生");
manageStudentBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
NewViewStudentGUI viewStudentGUI = new NewViewStudentGUI();
}
});
importBtn = new JButton("导入学生");
importBtn.addActionListener(e -> {
studentDAO = new StudentDAO();
JFileChooser fileChooser = new JFileChooser();
fileChooser.setDialogTitle("选择 CSV 文件");
//弹出“打开文件”文件选择器对话框
int userSelection = fileChooser.showOpenDialog(null);
//JFileChooser.APPROVE_OPTION 选中
//JFileChooser.CANCEL_OPTION 取消
//...
if (userSelection == JFileChooser.APPROVE_OPTION) {
java.io.File fileToImport = fileChooser.getSelectedFile();
try {
studentDAO.importStudent(fileToImport);
} catch (FileNotFoundException ex) {
throw new RuntimeException(ex);
} catch (SQLException ex) {
throw new RuntimeException(ex);
}
}
});
exportBtn = new JButton("导出学生");
exportBtn.addActionListener(e -> {
studentDAO = new StudentDAO();
try {
studentDAO.exportStudents();
} catch (SQLException | IOException ex) {
throw new RuntimeException(ex);
}
});
panel.add(addStudentBtn);
panel.add(manageStudentBtn);
panel.add(importBtn);
panel.add(exportBtn);
panel.add(info);
panel.add(timeLabel); // 将时间显示添加到界面底部
// 界面的字体
setMyFront("宋体",Font.BOLD,15);
add(panel);
}
public static void main(String[] args) throws SQLException {
new MainGUI().setVisible(true);
}
/** @description: 更改本界面字体样式
* @param: 字体名称eg“宋体”,字体样式,粗,普通,斜体....,字体大小
* @return: void
* @author: IhaveBB
* @date: 2023/12/10
*/
public void setMyFront(String frontName,int fontStyle,int size){
Font newFont = new Font(frontName,fontStyle,size);
timeLabel.setFont(newFont);
addStudentBtn.setFont(newFont);
manageStudentBtn.setFont(newFont);
importBtn.setFont(newFont);
exportBtn.setFont(newFont);
info.setFont(newFont);
}
}
NewViewStudentGUI 类
package com.nicebao.gui;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import com.nicebao.info.Student;
import com.nicebao.jdbc.StudentDAO;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class NewViewStudentGUI extends JFrame {
private JTextField searchField;
private JTable studentTable;
private DefaultTableModel tableModel;
private StudentDAO studentDAO;
public NewViewStudentGUI() {
setTitle("学生管理");
setSize(600, 400);
setLocationRelativeTo(null);
studentDAO = new StudentDAO();
JPanel panel = new JPanel(new BorderLayout());
//给搜索区域放到一个流面板中
JPanel searchPanel = new JPanel(new FlowLayout());
JLabel searchLabel = new JLabel("输入学生姓名或学号:");
searchField = new JTextField(15);
JButton searchBtn = new JButton("搜索");
searchBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String searchInput = searchField.getText();
try {
List<Student> students = new ArrayList<Student>();
// 检查是否有输入内容,若没有则查询所有学生信息
if (searchInput.isEmpty()) {
students = studentDAO.getAllStudent();
} else {
students = studentDAO.searchStudent(searchInput);
}
displayStudents(students);
} catch (SQLException ex) {
ex.printStackTrace();
}
}
});
searchPanel.add(searchLabel);
searchPanel.add(searchField);
searchPanel.add(searchBtn);
tableModel = new DefaultTableModel();
studentTable = new JTable(tableModel);
JScrollPane scrollPane = new JScrollPane(studentTable);
tableModel.setColumnIdentifiers(new String[]{"学号", "姓名", "性别", "生日", "住址", "手机号"});
panel.add(searchPanel, BorderLayout.NORTH);
panel.add(scrollPane, BorderLayout.CENTER);
//=============================================修改和删除区域======================================================
// 添加修改和删除按钮
JButton modifyBtn = new JButton("修改");
JButton deleteBtn = new JButton("删除");
// 存放按钮
JPanel buttonPanel = new JPanel(new FlowLayout());
buttonPanel.add(modifyBtn);
buttonPanel.add(deleteBtn);
panel.add(buttonPanel, BorderLayout.SOUTH);
modifyBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
int selectedRow = studentTable.getSelectedRow();
if(selectedRow == -1){
JOptionPane.showMessageDialog(NewViewStudentGUI.this, "请选择要修改的行!");
}else{
// 获取选中行的数据,作为编辑区的默认数据
long studentId = (long) studentTable.getValueAt(selectedRow, 0);
String name = (String) studentTable.getValueAt(selectedRow, 1);
//修改信息时,此处性别故意设置为输入框:),-\‘ ’/-
String gender = (String) studentTable.getValueAt(selectedRow, 2);
String birthdate = (String) studentTable.getValueAt(selectedRow, 3);
String address = (String) studentTable.getValueAt(selectedRow, 4);
String phoneNumber = (String) studentTable.getValueAt(selectedRow, 5);
// 创建一个新的对话框来编辑数据
JFrame editFrame = new JFrame("编辑学生信息");
editFrame.setLocationRelativeTo(NewViewStudentGUI.this);
JPanel editPanel = new JPanel(new GridLayout(7, 2));
JLabel idLabel = new JLabel("学号:");
JTextField idField = new JTextField(String.valueOf(studentId));
//这里设置学号不可变!
idField.setEditable(false);
JLabel nameLabel = new JLabel("姓名:");
JTextField nameField = new JTextField(name);
JLabel genderLabel = new JLabel("性别:");
JTextField genderField = new JTextField(gender);
JLabel birthLabel = new JLabel("生日:");
JTextField birthField = new JTextField(birthdate);
JLabel addressLabel = new JLabel("住址:");
JTextField addressField = new JTextField(address);
JLabel phoneLabel = new JLabel("手机号:");
JTextField phoneField = new JTextField(phoneNumber);
JButton updateButton = new JButton("完成");
updateButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 获取编辑后的新数据
String updatedName = nameField.getText();
String updatedGender = genderField.getText();
//处理日期格式错误输入问题
StudentDAO studentDAO = new StudentDAO();
String updatedBirthdate = Student.fixBirthdate(birthField.getText());
String updatedAddress = addressField.getText();
String updatedPhone = phoneField.getText();
// 更新表格中的数据(还可以不更新,直接再调用一次查询语句即可)
studentTable.setValueAt(updatedName, selectedRow, 1);
studentTable.setValueAt(updatedGender, selectedRow, 2);
studentTable.setValueAt(updatedBirthdate, selectedRow, 3);
studentTable.setValueAt(updatedAddress, selectedRow, 4);
studentTable.setValueAt(updatedPhone, selectedRow, 5);
//更新数据库汇总的数据
Student updatedStudent = new Student(studentId, updatedName, updatedGender, updatedBirthdate, updatedAddress, updatedPhone);
try {
studentDAO.updateStudent(updatedStudent);
} catch (SQLException ex) {
throw new RuntimeException(ex);
}
editFrame.dispose();
}
});
JButton cancelButton = new JButton("取消");
cancelButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
editFrame.dispose(); // 取消编辑并关闭编辑框
}
});
// 将编辑组件添加到面板中
editPanel.add(idLabel);
editPanel.add(idField);
editPanel.add(nameLabel);
editPanel.add(nameField);
editPanel.add(genderLabel);
editPanel.add(genderField);
editPanel.add(birthLabel);
editPanel.add(birthField);
editPanel.add(addressLabel);
editPanel.add(addressField);
editPanel.add(phoneLabel);
editPanel.add(phoneField);
editPanel.add(updateButton);
editPanel.add(cancelButton);
editFrame.add(editPanel);
editFrame.setSize(400, 300);
editFrame.setVisible(true);
}
}
});
//“删除”按钮动作
deleteBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//选中删除行
int selectedRow = studentTable.getSelectedRow();
if(selectedRow == -1){
JOptionPane.showMessageDialog(NewViewStudentGUI.this, "请选择要删除的行!");
}else{
int confirmDialog = JOptionPane.showConfirmDialog(NewViewStudentGUI.this, "确定要删除所选行吗?", "确认删除", JOptionPane.YES_NO_OPTION);
if (confirmDialog == JOptionPane.YES_OPTION) {
long studentId = (long) studentTable.getValueAt(selectedRow, 0);
tableModel.removeRow(selectedRow);
try {
studentDAO.deleteStudent(studentId);
} catch (SQLException ex) {
throw new RuntimeException(ex);
}
}
}
}
});
add(panel);
setVisible(true);
}
/** @description: 将学生信息添加到表格之中
* @param: List
* @return: void
* @author: IhaveBB
* @date: 2023/11/25
*/
private void displayStudents(List<Student> students) {
tableModel.setRowCount(0); // 清空表格
for (Student student : students) {
Object[] rowData = {student.getStudentId(), student.getName(), student.getGender(), student.getBirthdate(), student.getAddress(), student.getPhoneNumber()};
tableModel.addRow(rowData); // 添加每个学生信息到表格
}
}
}
Student类
package com.nicebao.info;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Student {
/**
* 学生类
*
* @name: Student
* @author: IhaveBB
* @date: 2023-11-24 21:24
**/
private long studentId;
private String name;
private String gender;
private String birthdate;
private String address;
private String phoneNumber;
// 构造函数、getter、setter、toString
public Student(){}
public Student(long studentId, String name, String gender, String birthdate, String address, String phoneNumber) {
this.studentId = studentId;
this.name = name;
this.gender = gender;
this.birthdate = birthdate;
this.address = address;
this.phoneNumber = phoneNumber;
}
public long getStudentId() {
return studentId;
}
public void setStudentId(long studentId) {
this.studentId = studentId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getBirthdate() {
return birthdate;
}
public void setBirthdate(String birthdate) {
this.birthdate = birthdate;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getPhoneNumber() {
return phoneNumber;
}
public void setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
}
@Override
public String toString() {
return "Student{" + "\n" +
" 学号=" + studentId + "\n" +
", 姓名='" + name + '\'' + "\n" +
", 性别='" + gender + '\'' + "\n" +
", 生日='" + birthdate + '\'' + "\n" +
", 住址='" + address + '\'' + "\n" +
", 手机号='" + phoneNumber + '\'' + "\n" +
'}';
}
/** @description: 数据库中生日类为Date,格式要求为yyyy-MM-dd。
* 故此方法为判断日期是否符合格式,若不符合则使用默认值,并提示错误,要求用户进行和修改。
* @param: String
* @return: String
* @author: IhaveBB
* @date: 2023/11/27
*/
public static String fixBirthdate(String birthdate) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
// 设置严格解析日期
dateFormat.setLenient(false);
try {
Date date = dateFormat.parse(birthdate);
//正确不进行修改
return birthdate;
} catch (ParseException e) {
System.out.println("生日日期格式日常" + e.getMessage());
return "1970/01/01";
}
}
}
StudentDAO类
package com.nicebao.jdbc;
import com.nicebao.info.Student;
import javax.swing.*;
import java.io.*;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class StudentDAO {
private Connection connection;
public StudentDAO() {
try {
connection = DatabaseConnector.getConnection();
} catch (SQLException e) {
e.printStackTrace();
}
}
/** @description: 添加学生信息
* @param: void
* @return: void
* @author: IhaveBB
* @date: 2023/11/24
*/
public void addStudent(Student student) throws SQLException {
String query = "INSERT IGNORE INTO students (studentId, name, gender, birthdate, address, phoneNumber) VALUES (?, ?, ?, ?, ?, ?)";
PreparedStatement preparedStatement = connection.prepareStatement(query);
preparedStatement.setLong(1, student.getStudentId());
preparedStatement.setString(2, student.getName());
preparedStatement.setString(3, student.getGender());
preparedStatement.setString(4, student.getBirthdate());
preparedStatement.setString(5, student.getAddress());
preparedStatement.setString(6, student.getPhoneNumber());
//执行此PreparedStatement对象中的 SQL 语句
preparedStatement.executeUpdate();
}
/** @description: 查询
* @param: String
* @return: List
* @author: IhaveBB
* @date: 2023/11/24
*/
public List searchStudent(String string) throws SQLException {
String studentName;
long studentId;
List<Student> students = new ArrayList<Student>();
//判断输入信息是学号还是姓名?
if(isNumber(string)){
studentId = Long.parseLong(string);
//更新初始值,方便与数据库交互
studentName = null;
}else{
studentName = string;
//更新初始值,方便与数据库交互
studentId = -1;
}
String query = "SELECT * FROM students WHERE name = ? OR studentId = ?";
PreparedStatement preparedStatement = connection.prepareStatement(query);
preparedStatement.setString(1, studentName);
preparedStatement.setLong(2, studentId);
//在此 PreparedStatement 对象中执行 SQL 查询,并返回 ResultSet 查询生成的对象。
//ResultSet表示数据库结果集的数据表,通常通过执行查询数据库的语句来生成。
ResultSet resultSet = preparedStatement.executeQuery();
while(resultSet.next()){
Student student = new Student();
//从左到右 每列仅可读取一次
student.setStudentId(resultSet.getLong("studentId"));
student.setName(resultSet.getString("name"));
student.setGender(resultSet.getString("gender"));
student.setBirthdate(resultSet.getString("birthdate"));
student.setAddress(resultSet.getString("address"));
student.setPhoneNumber(resultSet.getString("phoneNumber"));
students.add(student);
}
return students;
}
/** @description: 通过matches方法判断String类型的数值中,是否只包含数字。
* @param: String
* @return: boolean
* @author: IhaveBB
* @date: 2023/11/24
*/
public boolean isNumber(String str){
//记住是反斜杠!
return str.matches("\\d+");
}
/** @description: 查找全部学生信息,然后存放在一个链表中
* @param: void
* @return: java.util.List<org.example.Student>
* @author: IhaveBB
* @date: 2023/11/25
*/
public List<Student> getAllStudent() throws SQLException {
List<Student> students = new ArrayList<>();
String query = "SELECT * FROM students";
PreparedStatement preparedStatement = connection.prepareStatement(query);
ResultSet resultSet = preparedStatement.executeQuery();
while (resultSet.next()){
Student student = new Student();
student.setStudentId(resultSet.getLong("studentId"));
student.setName(resultSet.getString("name"));
student.setGender(resultSet.getString("gender"));
student.setBirthdate(resultSet.getString("birthdate"));
student.setAddress(resultSet.getString("address"));
student.setPhoneNumber(resultSet.getString("phoneNumber"));
students.add(student);
}
return students;
}
/** @description: 删除操作
* @param: long
* @return: void
* @author: IhaveBB
* @date: 2023/11/25
*/
public void deleteStudent(long studentId) throws SQLException {
String query = "DELETE FROM students WHERE studentId = ?";
try {
PreparedStatement preparedStatement = connection.prepareStatement(query);
preparedStatement.setLong(1, studentId);
preparedStatement.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}
/** @description: 更新数据库数据
* @param: Student
* @return: void
* @author: IhaveBB
* @date: 2023/11/25
*/
public void updateStudent(Student student) throws SQLException {
String query = "UPDATE students SET name = ?, gender = ?, birthdate = ?, address = ?, phoneNumber = ? WHERE studentId = ?";
PreparedStatement preparedStatement = connection.prepareStatement(query);
preparedStatement.setString(1, student.getName());
preparedStatement.setString(2, student.getGender());
preparedStatement.setString(3, student.getBirthdate());
preparedStatement.setString(4, student.getAddress());
preparedStatement.setString(5, student.getPhoneNumber());
preparedStatement.setLong(6, student.getStudentId());
preparedStatement.executeUpdate();
}
/** @description: 导出学生数据,使用CSV格式来存储
* @param: void
* @return: void
* @author: IhaveBB
* @date: 2023/11/25
*/
public void exportStudents() throws SQLException, IOException {
String query = "select * from students";
// 创建 CSV 文件并写入数据
File file = new File("students.csv");
Writer writer = new FileWriter(new File("students.csv"));
PreparedStatement preparedStatement = connection.prepareStatement(query);
ResultSet resultSet = preparedStatement.executeQuery();
while (resultSet.next()){
long studentId = resultSet.getLong("studentId");
String name = resultSet.getString("name");
String gender = resultSet.getString("gender");
String birthdate = resultSet.getString("birthdate");
String address = resultSet.getString("address");
String phoneNumber = resultSet.getString("phoneNumber");
writer.write(studentId + "," + name + "," + gender + "," + birthdate + "," + address + "," + phoneNumber + "\n");
}
writer.close();
System.out.println("文件已成功导出");
String exportPath = file.getAbsolutePath();
JOptionPane.showMessageDialog(null, "文件已成功导出至:\n" + exportPath);
}
/** @description: 导入文件
* @param: 文件路径
* @return: void
* @author: IhaveBB
* @date: 2023/11/25
*/
public void importStudent(java.io.File fileToImport) throws FileNotFoundException, SQLException {
String insertQuery = "INSERT IGNORE INTO students (studentId, name, gender, birthdate, address, phoneNumber) VALUES (?, ?, ?, ?, ?, ?)";
PreparedStatement preparedStatement = connection.prepareStatement(insertQuery);
File file = new File(String.valueOf(fileToImport));
Scanner scanner = new Scanner(file);
while (scanner.hasNextLine()){
String line = scanner.nextLine();
String[] data = line.split(",");
long studentId = Long.parseLong(data[0]);
String name = data[1];
String gender = data[2];
String birthdate = data[3];
String address = data[4];
String phoneNumber = data[5];
preparedStatement.setLong(1, studentId);
preparedStatement.setString(2, name);
preparedStatement.setString(3, gender);
preparedStatement.setString(4, birthdate);
preparedStatement.setString(5, address);
preparedStatement.setString(6, phoneNumber);
preparedStatement.executeUpdate();
}
System.out.println("CSV文件数据成功导入到数据库!");
}
}
DatabaseConnector类
package com.nicebao.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class DatabaseConnector {
/** @description: 连接数据库
* @param:
* @return:
* @author: IhaveBB
* @date: 2023/11/25
*/
private static final String URL = "jdbc:mysql://127.0.0.1:3306/students";
private static final String USERNAME = "root";
private static final String PASSWORD = "root";
public static Connection getConnection() throws SQLException {
return DriverManager.getConnection(URL, USERNAME, PASSWORD);
}
/** @description: 创建用户表
* @param: void
* @return: void
* @author: IhaveBB
* @date: 2023/12/6
*/
public static void createTable() throws SQLException {
Connection connection = getConnection();
String query = "CREATE TABLE IF NOT EXISTS students ( studentId BIGINT PRIMARY KEY, name VARCHAR(50) NOT NULL, gender VARCHAR(10) NOT NULL, birthdate DATE, address VARCHAR(100), phoneNumber VARCHAR(15));";
PreparedStatement preparedStatement = connection.prepareStatement(query);
preparedStatement.executeUpdate();
}
}