详解JDBC实现学生管理系统

  • 更新时间:2020-03-17 09:25:11
  • 编辑:龙悦畅

本文实例为大家分享了JDBC实现学生管理系统的具体代码,供大家参考,具体内容如下

1、学生类

package manage;
 
import java.util.Date;
 
/**
 * @author fanxf
 * @since 2018/4/27 17:01
 */
public class Student {
 
  private int id;
 
  private int age;
 
  private String sex;
 
  private String name;
 
  private Date dateCreated;
 
  public int getId() {
    return id;
  }
 
  public void setId(int id) {
    this.id = id;
  }
 
  public int getAge() {
    return age;
  }
 
  public void setAge(int age) {
    this.age = age;
  }
 
  public String getSex() {
    return sex;
  }
 
  public void setSex(String sex) {
    this.sex = sex;
  }
 
  public String getName() {
    return name;
  }
 
  public void setName(String name) {
    this.name = name;
  }
 
  public Date getDateCreated() {
    return dateCreated;
  }
 
  public void setDateCreated(Date dateCreated) {
    this.dateCreated = dateCreated;
  }
 
  public Student() {
  }
 
  public Student(int age, String sex, String name) {
    this.age = age;
    this.sex = sex;
    this.name = name;
  }
 
  public Student(int id, int age, String sex, String name) {
    this.id = id;
    this.age = age;
    this.sex = sex;
    this.name = name;
  }
 
  @Override
  public String toString() {
    return "Student{" +
        "id=" + id +
        ", age=" + age +
        ", sex='" + sex + '\'' +
        ", name='" + name + '\'' +
        ", dateCreated=" + dateCreated +
        '}';
  }
}

2、jdbc工具类

package manage;
 
import java.io.IOException;
import java.sql.*;
import java.util.Properties;
 
/**
 * @author fanxf
 * @since 2018/4/27 11:06
 */
//数据库的工具类
public class JdbcUtils {
 
  private static String driver = "";
  private static String url = "";
  private static String user = "";
  private static String password = "";
 
  static {
    Properties p = new Properties();
    try {
      p.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("db.properties"));
    } catch (IOException e) {
      e.printStackTrace();
    }
    driver = p.getProperty("driver");
    url = p.getProperty("url");
    user = p.getProperty("user");
    password = p.getProperty("password");
    try {
      Class.forName(driver);
    } catch (ClassNotFoundException e) {
      e.printStackTrace();
    }
  }
 
  public static Connection getConnection() {
    try {
      return DriverManager.getConnection(url, user, password);
    } catch (SQLException e) {
      e.printStackTrace();
    }
    return null;
  }
  //释放的时候要从小到大释放
  //Connection -> Statement --> Resultset
 
 
  public static void release(ResultSet rs, Statement stmt, Connection conn) {
    if (rs != null) {
      try {
        rs.close();
      } catch (SQLException e) {
        e.printStackTrace();
      }
    }
    if (stmt != null) {
      try {
        stmt.close();
      } catch (SQLException e) {
        e.printStackTrace();
      }
    }
 
    if (conn != null) {
      try {
        conn.close();
      } catch (SQLException e) {
        e.printStackTrace();
      }
    }
  }
}

3、代码

package manage;
 
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Scanner;
 
/**
 * @author fanxf
 * @since 2018/4/27 17:06
 */
public class ManageSystem {
 
  private static Connection conn = null;
  private static PreparedStatement ps = null;
  private static ResultSet rs = null;
 
  /**
   * 添加学生数据
   *
   * @param student
   * @return
   */
  public static int addStudent(Student student) {
    conn = JdbcUtils.getConnection();
    int result = 0;
    try {
      ps = conn.prepareStatement("INSERT INTO student (age, sex, `name`, dateCreated) VALUES (?, ?, ?, now())");
      ps.setInt(1, student.getAge()); //设置第一个参数
      ps.setString(2, student.getSex()); //设置第二个参数
      ps.setString(3, student.getName()); //设置第三个参数
      result = ps.executeUpdate();
    } catch (SQLException e) {
      e.printStackTrace();
    } finally {
      JdbcUtils.release(null, ps, conn); //关闭连接
    }
    return result;
  }
 
  public void add() {
    Scanner scan = new Scanner(System.in);
    System.out.println("请输入学生年龄");
    int age = scan.nextInt();
    System.out.println("请输入学生性别");
    String sex = scan.next();
    System.out.println("请输入学生姓名");
    String name = scan.next();
    Student s = new Student(age, sex, name);
    int flag = addStudent(s);
    if (flag > 0) {
      System.out.println("添加成功");
    } else {
      System.out.println("添加失败");
    }
  }
 
  /**
   * 修改
   *
   * @param student
   * @return
   */
  public static int updateStudent(Student student) {
    conn = JdbcUtils.getConnection();
    int result = 0;
    try {
      ps = conn.prepareStatement("UPDATE student SET age = ?, sex = ?, `name` = ? WHERE id = ?");
      ps.setInt(1, student.getAge()); //设置第一个参数
      ps.setString(2, student.getSex()); //设置第二个参数
      ps.setString(3, student.getName()); //设置第三个参数
      ps.setInt(4, student.getId());
      result = ps.executeUpdate();
    } catch (SQLException e) {
      e.printStackTrace();
    } finally {
      JdbcUtils.release(null, ps, conn); //关闭连接
    }
    return result;
  }
 
  public void update() {
    Scanner scan = new Scanner(System.in);
    System.out.println("请输入学生id");
    int id = scan.nextInt();
    System.out.println("请输入学生年龄");
    int age = scan.nextInt();
    System.out.println("请输入学生性别");
    String sex = scan.next();
    System.out.println("请输入学生姓名");
    String name = scan.next();
    Student s = new Student(id, age, sex, name);
    int flag = updateStudent(s);
    if (flag > 0) {
      System.out.println("更新成功");
    } else {
      System.out.println("更新失败");
    }
  }
 
  /**
   * 删除
   *
   * @param id
   * @return
   */
  public static int deleteStudent(int id) {
    conn = JdbcUtils.getConnection();
    int result = 0;
    try {
      ps = conn.prepareStatement("DELETE FROM student WHERE id = ?");
      ps.setInt(1, id); //设置第一个参数
      result = ps.executeUpdate();
    } catch (SQLException e) {
      e.printStackTrace();
    } finally {
      JdbcUtils.release(null, ps, conn); //关闭连接
    }
    return result;
  }
 
  public void delete() {
    Scanner scan = new Scanner(System.in);
    System.out.println("请输入学生id");
    int id = scan.nextInt();
    int flag = deleteStudent(id);
    if (flag > 0) {
      System.out.println("删除成功");
    } else {
      System.out.println("删除失败");
    }
  }
 
  public static void main(String[] args) {
    System.out.println("************ 欢迎进入学生管理系统 *************");
    ManageSystem ms = new ManageSystem();
    boolean b = true;
    while (b) {
      System.out.println("你想进行以下哪项操作");
      System.out.println("1、添加学生  2、更新学生数据  3、学生信息查询  4、删除学生 0、退出");
      Scanner scan = new Scanner(System.in);
      int i = scan.nextInt();
      switch (i) {
        case 1:
          ms.add();
          break;
        case 2:
          ms.update();
          break;
        case 3:
          System.out.println();
          break;
        case 4:
          ms.delete();
          break;
        default:
          System.out.println("没有该操作选项,请重新来过!");
          main(args);
          break;
      }
    }
  }
}

4、properties数据库文件自己配置

数据库字段根据学生类建立!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持码农之家。

相关教程

  • Spring Boot中使用JDBC Templet的方法教程

    这篇文章主要给大家介绍了关于在Spring Boot中使用JDBC Templet的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起

    发布时间:2019-06-03

  • C语言链表实现学生管理系统

    这篇文章主要为大家详细介绍了C语言链表实现学生管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    发布时间:2021-04-07

  • Java从入门到精通(第4版)

    Java从入门到精通(第4版)

    本书从初学者角度,以通俗易懂的语言、丰富多彩的实例,详细介绍了使用Java语言进行程序开发需要掌握的知识,所有知识都结合具体实例进行介绍,涉及的程序代码给出了详细的注释,可以使读者轻松领会Java程序开发的精髓,欢迎下载

    大小:292.7 MBJava编程电子书

  • RxJava 2.x 实战

    RxJava 2.x 实战

    《RxJava 2.x 实战》 首先讲解了函数式响应式编程的概念,包括Observables、Subject、Processor 等,以及RxJava的优点和用途。然后讲解了RxJava 中必不可少的操作符,包括创建操作符、变换操作符、过滤

    大小:149 MBRxJava电子书

  • 大型JavaScript应用最佳实践指南

    大型JavaScript应用最佳实践指南

    大小:35 MBJavaScript电子书

  • Java函数式编程

    Java函数式编程

    这是一本关于函数式编程的书,由浅入深地介绍了函数式编程的思维方式,非常适合对Java有所了解的程序员,欢迎下载

    大小:205.8 MBJava编程电子书

  • OSGi与Equinox:创建高度模块化的Java系统

    OSGi与Equinox:创建高度模块化的Java系统

    阅读本书,首先你很快就会使用Eclipse bundle工具创建第一个基于OSGi的系统,进而转向复杂的产品开发。接下来,你将掌握一些用于创建具有特殊模块化、高效性和可维护性系统的最佳实践和技

    大小:21.8 MBJava电子书

  • 自己动手写Java虚拟机

    自己动手写Java虚拟机

    Java虚拟机非常复杂,要想真正理解它的工作原理,最好的方式就是自己动手编写一个! 本书是继《深入理解Java虚拟机》之后的又一经典著作,它一方面遵循《Java虚拟机规范》,一方面又独辟

    大小:4.27 MBJava电子书

  • Java Web轻量级开发面试教程

    Java Web轻量级开发面试教程

    本书围绕软件公司对高级程序员的平均标准要求,构建了Java Web方面的高级程序员的进阶体系,以及在面试时如何高效地介绍自己项目经验的方法,适合想从事软件行业的在校学生、正在找工作

    大小:49.5 MBJava电子书

  • Web前端开发精品课 JavaScript基础教程

    Web前端开发精品课 JavaScript基础教程

    《JavaScript基础教程》 共分为2大部分,第1部分是JavaScript基础知识,主要学习JavaScript基础概念如变量、运算符、表达式等。第二部分是JavaScript进阶知识,主要学习DOM、事件操作以及各种开发技

    大小:9.7 MB前端电子书

  • Java经典实例

    Java经典实例

    Java经典实例(第三版) 从lambda表达式、JavaFX 8,到网络编程和支持移动设备等方面,Java 8都有许多更新。包含了数百个经过实践验证的技巧,内容涵盖了广泛的Java主题,可帮助你快速进入编程

    大小:167.8 MBJava电子书

用户留言