JAVA实现对MySQL数据库的增删改查(学生信息管理系统案例)
Student类
public class Student {
private String id;
private String name;
private String gender;
private String birthday;
public Student(){}
public Student(String id,String name,String gender,String birthday){
super();
this.id=id;
this.name=name;
this.gender=gender;
this.birthday=birthday;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
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 getBirthday() {
return birthday;
}
public void setBirthday(String birthday) {
this.birthday = birthday;
}
public String toString() {
return id + "\t" + name + "\t" + gender + "\t" + birthday;
}
}
JdbcUtils类
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;
public class JdbcUtils {
private static String driver;
private static String url;
private static String username;
private static String password;
private static Properties p = null;
static {
try {
// 加载配置文件内容到p对象中
InputStream is = JdbcUtils.class.getResourceAsStream("/dbconfig.properties");
p = new Properties();
p.load(is);
// 获取JDBC参数
driver = p.getProperty("driver");
url = p.getProperty("url");
username = p.getProperty("username");
password = p.getProperty("password");
Class.forName(driver);
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
// 封装获取Connection对象
public static Connection getConnection() throws SQLException {
Connection conn = null;
try {
conn = DriverManager.getConnection(url, username, password);
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
// 封装获取PreparedStatement对象
public static PreparedStatement getPreparedStatement(Connection conn, String sql) throws SQLException {
PreparedStatement ps = null;
try {
ps = getConnection().prepareStatement(sql);
} catch (SQLException E) {
E.printStackTrace();
}
return ps;
}
// 封装关闭资源方法
public static void clossAll(ResultSet rs, PreparedStatement ps, Connection conn) {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (ps != null) {
try {
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
Fuction类
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 Function {
private static Student student;
final static Scanner input = new Scanner(System.in);
// 查询所有记录
public static List<Student> query(ResultSet rs, PreparedStatement ps, Connection conn) throws SQLException {
String sql = "select * from student;";
List<Student> list = new ArrayList<Student>();
ps = JdbcUtils.getPreparedStatement(conn, sql);
rs = ps.executeQuery();
System.out.println("学号" + "\t" + "姓名" + "\t" + "性别" + "\t" + "出生年月");
System.out.print("-------------------------------------\n");
try {
while (rs.next()) {
Student student = new Student(rs.getString("id"), rs.getString("name"), rs.getString("gender"),
rs.getString("birthday"));
list.add(student);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
JdbcUtils.clossAll(rs, ps, conn);
}
return list;
}
// 查询学生信息
public static Student select(ResultSet rs, PreparedStatement ps, Connection conn) throws SQLException {
String sql = "select * from student where name=?;";
System.out.println("请输入你要查询的学生姓名>>");
String a = input.next();
try {
ps = JdbcUtils.getPreparedStatement(conn, sql);
ps.setString(1, a);
rs = ps.executeQuery();
while (rs.next()) {
student = new Student(rs.getString("id"), rs.getString("name"), rs.getString("gender"),
rs.getString("birthday"));
}
} catch (Exception e) {
e.printStackTrace();
} finally {
JdbcUtils.clossAll(rs, ps, conn);
}
return student;
}
// 插入一条学生信息
public static void insert(PreparedStatement ps, Connection conn) throws SQLException {
System.out.println("请输入学号>>");
student.setId(input.next());
System.out.println("请输入姓名>>");
student.setName(input.next());
System.out.println("请输入性别>>");
student.setGender(input.next());
System.out.println("请输入出生年月>>");
student.setBirthday(input.next());
String sql = "insert into student values(?,?,?,?)";
ps = JdbcUtils.getPreparedStatement(conn, sql);
try {
ps.setString(1, student.getId());
ps.setString(2, student.getName());
ps.setString(3, student.getGender());
ps.setString(4, student.getBirthday());
System.out.println("插入学生信息成功");
} catch (Exception e) {
e.printStackTrace();
} finally {
JdbcUtils.clossAll(null, ps, conn);
}
}
// 修改学生信息
public static void update(PreparedStatement ps, Connection conn) throws SQLException {
System.out.println("请输入需要被修改的学生姓名>>");
String oldName = input.next();
System.out.println("你要修改该学生的哪些信息>>\n" + "【a】 -> 姓名\n" + "【b】 -> 性别\n" + "【c】 -> 出生年月日");
String x = input.next();
try {
switch (x) {
case "a":
System.out.println("请输入将被替换的姓名>>");
String newName = input.next();
String sql = "update student set name=? where name=?";
ps = JdbcUtils.getPreparedStatement(conn, sql);
ps.setString(1, newName);
ps.setString(2, oldName);
;
break;
case "b":
System.out.println("请输入将被替换的性别>>");
String newGender = input.next();
String sql2 = "update student set gender=? where name=?";
ps = JdbcUtils.getPreparedStatement(conn, sql2);
ps.setString(1, newGender);
ps.setString(2, oldName);
;
break;
case "c":
System.out.println("请输入将被替换的出生年月>>");
String newBirthday = input.next();
String sql3 = "update student set birthday=? where name=?";
ps = JdbcUtils.getPreparedStatement(conn, sql3);
ps.setString(1, newBirthday);
ps.setString(2, oldName);
;
break;
default:
System.out.print("输入正确序号");
;
break;
}
System.out.println("修改学生信息成功");
} catch (Exception e) {
e.printStackTrace();
} finally {
JdbcUtils.clossAll(null, ps, conn);
}
}
// 删除数据,以姓名输入!
public static void delete(PreparedStatement ps, Connection conn) throws SQLException {
System.out.println("请输入需要被删除学生的姓名>>");
student.setName(input.next());
String sql = "delete from student where name=?";
try {
ps = JdbcUtils.getPreparedStatement(conn, sql);
ps.setString(1, student.getName());
System.out.println("删除学生信息成功");
} catch (Exception e) {
e.printStackTrace();
} finally {
JdbcUtils.clossAll(null, ps, conn);
}
}
// 分页显示学生信息
public static List<Student> TestPage(ResultSet rs, PreparedStatement ps, Connection conn, int index, int size)
throws SQLException {
String sql = "select * from student limit ?,?";
List<Student> list = new ArrayList<Student>();
ps = JdbcUtils.getPreparedStatement(conn, sql);
ps.setInt(1, (index - 1) * size);
ps.setInt(2, size);
rs = ps.executeQuery();
System.out.println("学号" + "\t" + "姓名" + "\t" + "性别" + "\t" + "出生年月");
System.out.print("-------------------------------------\n");
try {
while (rs.next()) {
Student student = new Student(rs.getString("id"), rs.getString("name"), rs.getString("gender"),
rs.getString("birthday"));
list.add(student);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
JdbcUtils.clossAll(rs, ps, conn);
}
return list;
}
}
Test类
import java.util.List;
import java.sql.*;
import java.util.Scanner;
public class main {
final static Scanner input = new Scanner(System.in);
public static void main(String[] args) {
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
boolean flag = false;
while (true) {
try {
conn = JdbcUtils.getConnection();
System.out.println("" +
"~~~~~~~~~~~~~~~~~学生 信息 管理 系统~~~~~~~~~~~~~~~\n" +
"~~~~~~~~~~~~~~~~~ 请选择相关功能 ~~~~~~~~~~~~~~~\n" +
"【1】 -> 显示所有学生信息;\n" +
"【2】 -> 查询学生信息;\n" +
"【3】 -> 添加新的学生信息;\n" +
"【4】 -> 修改学生信息;\n" +
"【5】 -> 删除学生信息;\n" +
"【6】 -> 分页显示学生信息;\n" +
"【0】 -> 退出程序!\n>>");
int x = input.nextInt();
switch (x) {
case 1:
List<Student> list=Function.query(rs,ps,conn);
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i).getId()+"\t"+list.get(i).getName()+"\t"+list.get(i).getGender()+"\t"+list.get(i).getBirthday());
}
break;
case 2:
Student student=Function.select(rs,ps,conn);
if (student!=null) {
System.out.println("该学生的信息为:");
System.out.println(student.getId()+"\t"+student.getName()+"\t"+student.getGender()+"\t"+student.getBirthday());
}
break;
case 3: Function.insert(ps,conn);break;
case 4: Function.update(ps,conn);break;
case 5: Function.delete(ps,conn);break;
case 6:
int index=1;
int size=3;
System.out.println("输入‘n’显示第一页,再次输入显示下一页(一页3行)");
while(true){
String anyKey=input.next();
if (anyKey.equalsIgnoreCase("n")) {
List<Student> list2= Function.TestPage(rs,ps,conn, index, size);
for (int i = 0; i < list2.size(); i++) {
System.out.println(list2.get(i).getId()+"\t"+list2.get(i).getName()+"\t"+list2.get(i).getGender()+"\t"+list2.get(i).getBirthday());
}
index++;
}
else {
break;
}
}
break;
case 0: flag = true;break;
default:
System.out.println("!!!!!请输入正确的功能序号!!!!!");
break;
}
} catch (SQLException e) {
e.printStackTrace();
}
if (flag==true) break;//退出无线循环
}
System.out.println("!!!!!谢谢使用!!!!!");
}
}
dbconfig.properties 配置文件
driver=com.mysql.cj.jdbc.Driver
url =jdbc:mysql://localhost:3306/mydb1?serverTimezone=UTC
username=你的账户名
password=你的密码
创建数据库:
CREATE TABLE `student` (
`id` int NOT NULL,
`name` varchar(20) NOT NULL,
`gender` char(1) NOT NULL,
`birthday` varchar(45) NOT NULL,
PRIMARY KEY (`id`)
);
INSERT INTO student (`id`, `name`, `gender`, `birthday`) VALUES ('1', '马盈辉', '男', '1999-10-03');
INSERT INTO student(`id`, `name`, `gender`, `birthday`) VALUES ('2', '李龙飞', '男', '1992-11-21');
INSERT INTO student(`id`, `name`, `gender`, `birthday`) VALUES ('3', '郑子科', '男', '1899-01-02');
INSERT INTO student(`id`, `name`, `gender`, `birthday`) VALUES ('4', '何春阳', '女', '1993-10-22');
INSERT INTO student(`id`, `name`, `gender`, `birthday`) VALUES ('5', '陈冠希', '男', '1999-10-03');
INSERT INTO student(`id`, `name`, `gender`, `birthday`) VALUES ('6', '小刚', '男', '2001-05-10');
INSERT INTO student(`id`, `name`, `gender`, `birthday`) VALUES ('7', '刘一手', '男', '2003-10-16');
INSERT INTO student(`id`, `name`, `gender`, `birthday`) VALUES ('8', '孙悟空', '男', '1992-10-23');
INSERT INTO student(`id`, `name`, `gender`, `birthday`) VALUES ('9', '猪八戒', '男', '1998-10-23');
版权声明:本文为qq_44694720原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。