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
语句可以捕获并处理这些异常,从而防止程序因未处理的异常而崩溃。
1 2 3 4 5
| try { } catch (ExceptionType e) { }
|
主函数:
1 2 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 连接函数:
1 2 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; }
|
更新学生成绩函数:
1 2 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("学生成绩修改成功。"); }
|
按系对学生成绩进行排名:
1 2 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(); } }
|