JDBC实现简单的学生管理系统

文章目录

      • 实验目的
      • 实验相关资源
      • 实验展示
      • 实验源码
        • JDBCUtils.java
        • Student.java
        • CRUD.java
        • database.propertises


实验目的

  1. 练习JDBC中的增、删、改、查的基本操作。

  2. 实现对连接、关闭资源的自定义封装。

  3. 练习commons-dbutils工具类中部分API



实验相关资源

驱动

提取码:0o69



实验展示

数据表初始状态
JDBC实现简单的学生管理系统_第1张图片

运行程序
JDBC实现简单的学生管理系统_第2张图片

数据表更改后
JDBC实现简单的学生管理系统_第3张图片


注:其他功能就不再演示,详情见下面源码,源码实现了简单的增、删、改、查



实验源码

自定义封装类

JDBCUtils.java

package com.xiaomingxingwu.JDBCUtils;

import com.alibaba.druid.pool.DruidDataSourceFactory;
import org.apache.commons.dbutils.DbUtils;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;

/**
 * 封装连接,关闭操作
 * @author xiaomingxing
 * @create 2019-10-06 22:37
 */
public class JDBCUtils {


    // 创建数据库连接池
    private static DataSource dataSource = null;

    static {
            Properties prop = new Properties();
        try {
            // 获取配置文件中的配置信息
            prop.load(JDBCUtils.class.getClassLoader().getResourceAsStream("database.properties"));
            dataSource = DruidDataSourceFactory.createDataSource(prop);
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    // 连接
    public static Connection getConnection(){
        // 获取连接
        Connection conn = null;
        try {
            conn = dataSource.getConnection();
        } catch (SQLException e) {
            e.printStackTrace();
        }

        if (conn != null)
            System.out.println("连接成功!");
        else
            System.out.println("连接失败!");
        return conn;
    }

     // 关闭资源
     public static void closeResource(Connection conn, PreparedStatement ps, ResultSet rs){
        DbUtils.closeQuietly(conn);
        DbUtils.closeQuietly(ps);
        DbUtils.closeQuietly(rs);
    }


}



数据表对应的类

Student.java

package com.xiaomingxingwu.DAO;

/**
 * 根据DAO思想,一个数据表对应一个类
 * @author xiaomingxing
 * @create 2019-10-06 23:14
 */
public class Student {
    private String name;
    private int age;
    private String sex;

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    public String getSex() {
        return sex;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public Student(String name, int age, String sex) {
        this.name = name;
        this.age = age;
        this.sex = sex;
    }

    public Student() {
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", sex='" + sex + '\'' +
                '}';
    }
}



实现增、删、改、查(主函数)

CRUD.java

package com.xiaomingxingwu.CRUD;

import com.xiaomingxingwu.DAO.Student;
import com.xiaomingxingwu.JDBCUtils.JDBCUtils;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanListHandler;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;
import java.util.Scanner;

/**
 * 学生管理系统 version 1.0
 * @author xiaomingxing
 * @create 2019-10-07 8:50
 */
public class CRUD {

    private static Scanner sc = new Scanner(System.in);

    public static void main(String[] args) {
        while (true){
            Logo();
            // 接收用户输入的选择
            int num = sc.nextInt();

            if(num == 5){
                return ; // 退出
            }
            switch (num){
                case 1:
                    update1(); // 添加
                    break;

                case 2:
                    query(); // 查询
                    break;

                case 3:
                    update2(); // 修改
                    break;

                case 4:
                    update3(); // 删除
                    break;

                default:
                    System.out.println("您的输入有误,请您重新输入!");
                    break;
            }
        }

    }


    // 显示logo
    private static void Logo() {
        System.out.println("#############################");
        System.out.println("#\t\t学生管理系统\t\t#");
        System.out.println("#\t\t  1.添加\t\t\t#");
        System.out.println("#\t\t  2.查询\t\t\t#");
        System.out.println("#\t\t  3.修改\t\t\t#");
        System.out.println("#\t\t  4.删除\t\t\t#");
        System.out.println("#\t\t  5.退出\t\t\t#");
        System.out.println("#############################");
        System.out.println("请输入你的选择:");

    }

    // 添加
    private static void update1( ) {

        // 建立连接
        Connection conn = JDBCUtils.getConnection();

        // 预编译sql语句
        String sql = "insert into demo1 (name,age,sex) values (?,?,?);";

        // 提示用户输入数据
        System.out.println("姓名:");
        String name = sc.next();

        System.out.println("年龄:");
        int age = sc.nextInt();

        System.out.println("性别:");
        String sex = sc.next();

        // 调用update方法
        QueryRunner queryRunner = new QueryRunner();
        int res = 0;
        try {
            res = queryRunner.update(conn, sql, name, age, sex);
            System.out.println("成功添加"+res+"数据!"+"\n");
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
        // 关闭资源
        JDBCUtils.closeResource(conn,null,null);

        }

    }

    // 修改
    private static void update2( ) {

        // 建立连接
        Connection conn = JDBCUtils.getConnection();

        // 预编译sql语句
        String sql = "update demo1 set age = ?, sex = ? where `name` = ?;";

        // 提示用户输入数据
        System.out.println("请输入要修改的学生姓名:");
        String name = sc.next();

        System.out.println("新年龄:");
        int age = sc.nextInt();

        System.out.println("新性别:");
        String sex = sc.next();

        // 调用update方法
        QueryRunner queryRunner = new QueryRunner();
        int res = 0;
        try {
            res = queryRunner.update(conn, sql, age, sex, name);
            System.out.println("成功修改"+res+"数据!"+"\n");
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            // 关闭资源
            JDBCUtils.closeResource(conn,null,null);

        }

    }


    // 删除
    private static void update3( ) {

        // 建立连接
        Connection conn = JDBCUtils.getConnection();

        // 预编译sql语句
        String sql = "delete from demo1 where `name` = ?;";

        // 提示用户输入数据
        System.out.println("请输入要删除的学生姓名:");
        String name = sc.next();


        // 调用update方法
        QueryRunner queryRunner = new QueryRunner();
        int res = 0;
        try {
            res = queryRunner.update(conn, sql, name);
            System.out.println("成功删除"+res+"数据!"+"\n");
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            // 关闭资源
            JDBCUtils.closeResource(conn,null,null);

        }

    }


    // 目前的函数功能只能查询一条学生的信息
    private static void query( ) {

        // 建立连接
        Connection conn = JDBCUtils.getConnection();

        // 预编译sql语句
        String sql = "select `name`,age,sex from demo1 where `name` = ?;";

        // 提示用户输入数据
        System.out.println("请你输入要查询学生的姓名:");
        String name = sc.next();


        // 调用查询方法
        QueryRunner queryRunner = new QueryRunner();
        // 创建结果集的实例
        BeanListHandler<Student> beanListHandler = new BeanListHandler<Student>(Student.class);
        try {
            List<Student> list = queryRunner.query(conn, sql, beanListHandler, name);
            // 遍历结果集中的数据
            list.forEach(System.out::println);
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            // 关闭资源
            JDBCUtils.closeResource(conn,null,null);
        }




    }
}



数据库配置文件

database.propertises

url=jdbc:mysql://localhost:3306/demo
driverClassName=com.mysql.jdbc.Driver
username=root
password=123456



注:上面源码中,并没有考虑到性能、美观等相关问题,还请各位大佬,不喜勿喷!

你可能感兴趣的:(Java学习笔记)