Java 连接 MySQL 数据库实现管理系统。
学了 Java 学了 MySQL,合起来练练手,做一个 JDBC 编程(Java DataBase Connectivity)。
简单来说就是 Java 语言配上驱动包后,连接上本地的 MySQL 数据库,然后通过设定好的 SQL 命令结合传入参数对数据库进行各种增删改查操作。
配置环境
- 配置好IntelliJ IDEA与MySQL环境后,在官网下载驱动 jar 包。
 (mysql-connector-java.jar)
- 在 IDEA 中导入驱动 jar 包。
 在 src 下创建 lib 文件夹,导入下载好的 jar 包。将 lib 进行 Add as Library 操作。
 
流程设计
 
Java 代码实现
完整代码 400 行,这里就不全部放出来了。展示一下核心部分以及部分代码实现吧。
- 在 Java 中,try-catch语句用于处理异常。异常是程序运行时出现的错误或异常情况,使用try-catch语句可以捕获并处理这些异常,从而防止程序因未处理的异常而崩溃。
| 12
 3
 4
 5
 
 | try {
 } catch (ExceptionType e) {
 
 }
 
 | 
主函数:
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 
 | public static void main(String[] args) throws SQLException {Conn c = new Conn();
 scanner = new Scanner(System.in);
 statement = c.getConnection().createStatement();
 
 c.print_interfaces();
 while (true){
 int op = scanner.nextInt();
 switch(op){
 case 0:
 c.print_interfaces();
 break;
 case 1:
 c.print_Student();
 break;
 case 2:
 c.new_Student();
 break;
 case 3:
 c.update_Student_info();
 break;
 case 4:
 c.print_Course();
 break;
 case 5:
 c.new_Course();
 break;
 case 6:
 c.update_Course_info();
 break;
 case 7:
 c.delete_null_course();
 break;
 case 8:
 c.input_grade();
 break;
 case 9:
 c.update_grade();
 break;
 case 10:
 c.get_grade_by_Sdept();
 break;
 case 11:
 c.order_by_Sdept();
 break;
 case 12:
 c.search_info();
 break;
 case -1:
 statement.close();
 return;
 default:
 System.out.print("请重新输入操作序号:");
 break;
 }
 }
 }
 
 | 
MySQL 连接函数:
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 
 | public Connection getConnection() { try {
 Class.forName("com.mysql.cj.jdbc.Driver");
 System.out.println("数据库驱动加载成功");
 } catch (ClassNotFoundException e) {
 e.printStackTrace();
 }
 try {
 con = DriverManager.getConnection("jdbc:mysql://localhost:3306/java_to_mysql?useUnicode=true&characterEncoding=gbk", user, password);
 System.out.println("数据库连接成功");
 } catch (SQLException e) {
 e.printStackTrace();
 }
 return con;
 }
 
 | 
更新学生成绩函数:
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 
 | public void update_grade() throws SQLException {System.out.print("请输入学号:");
 String Sno = scanner.next();
 System.out.print("请输入课程号:");
 String Cno = scanner.next();
 System.out.print("请输入修改后的成绩:");
 int Grade = scanner.nextInt();
 String sql = "UPDATE SC SET Grade = ? WHERE Sno = ? AND Cno = ?;";
 PreparedStatement preparedStatement = con.prepareStatement(sql);
 preparedStatement.setInt(1, Grade);
 preparedStatement.setString(2, Sno);
 preparedStatement.setString(3, Cno);
 preparedStatement.executeUpdate();
 System.out.println("学生成绩修改成功。");
 }
 
 | 
 
按系对学生成绩进行排名:
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 
 | public void order_by_Sdept() throws SQLException {String sql1 = "SELECT DISTINCT Sdept FROM Student, SC WHERE Student.Sno = SC.Sno;";
 String sql2 = "SELECT Student.Sno, Sname, SC.Cno, Cname, Grade FROM Student, SC, Course " +
 "WHERE Student.Sno = SC.Sno AND Sdept = ? AND SC.Cno = Course.Cno " +
 "ORDER BY Grade DESC";
 ResultSet Sdepts = statement.executeQuery(sql1);
 while(Sdepts.next()){
 PreparedStatement preparedStatement = con.prepareStatement(sql2);
 preparedStatement.setString(1, Sdepts.getString("Sdept"));
 ResultSet resultSet = preparedStatement.executeQuery();
 System.out.println(Sdepts.getString("Sdept") + " 成绩表");
 System.out.println("学号         姓名      课程号     课程名称      成绩");
 while(resultSet.next()){
 System.out.printf("%-10s  %-8s   %-5s   %-8s   %-8d\n",
 resultSet.getString("Student.Sno"),
 resultSet.getString("Sname"),
 resultSet.getString("Cno"),
 resultSet.getString("Cname"),
 resultSet.getInt("Grade"));
 }
 System.out.println();
 }
 }
 
 | 
