使用预编译语句查询教师薪资

MySQLBeginner
立即练习

介绍

在这个项目中,你将学习如何使用 JDBC(Java 数据库连接)通过PreparedStatement查询 MySQL 数据库。目标是从edusys数据库的instructor表中检索工资高于 6000 的教师的姓名和工资。

👀 预览

JDBC 项目预览图片

🎯 任务

在这个项目中,你将学习:

  • 如何使用 JDBC 建立数据库连接
  • 如何创建带有参数占位符的PreparedStatement
  • 如何执行查询并处理结果集
  • 如何正确处理异常并关闭资源

🏆 成果

完成这个项目后,你将能够:

  • 理解 JDBC 的基础知识以及如何使用它与 MySQL 数据库进行交互
  • 编写使用PreparedStatement执行带参数 SQL 查询的 Java 代码
  • 使用 JDBC 从数据库中检索和处理数据
  • 在 JDBC 应用程序中实现错误处理和资源管理

启动 MySQL 服务并导入数据库

在这一步中,你将学习如何启动 MySQL 服务并导入edusys.sql数据库。按照以下步骤完成此步骤:

  1. 启动 MySQL 服务。你可以在终端中运行以下命令来完成此操作:

    sudo service mysql start
  2. edusys.sql数据库导入 MySQL。你可以在终端中运行以下命令来完成此操作:

    mysql -u root < /home/labex/project/edusys.sql

此命令将使用 root 用户将edusys.sql数据库导入 MySQL。

✨ 查看解决方案并练习

创建一个 Java 项目目录

在这一步中,你将学习如何创建一个 Java 项目目录。按照以下步骤完成此步骤:

  1. 为你的 Java 项目创建一个新目录:

    mkdir /home/labex/project/salary
    cd /home/labex/project/salary
  2. 为你的项目创建必要的子目录:

    mkdir src lib bin
    • src目录将包含你的 Java 源代码文件。
    • lib目录将包含你的项目使用的任何外部库。
    • bin目录将包含编译后的 Java 类文件。
✨ 查看解决方案并练习

移动 JDBC 驱动和 Java 文件

在这一步中,你将学习如何将 JDBC 驱动和JDBCQueryByPreparedStatement.java文件移动到相应的目录。按照以下步骤完成此步骤:

  1. 将 JDBC 驱动移动到lib目录:

    mv /home/labex/project/mysql-connector-java-8.0.21.jar /home/labex/project/salary/lib
  2. JDBCQueryByPreparedStatement.java文件移动到src目录:

    mv /home/labex/project/JDBCQueryByPreparedStatement.java /home/labex/project/salary/src
✨ 查看解决方案并练习

实现查询系统

在这一步中,你将在JDBCQueryByPreparedStatement.java文件中实现大学信息查询系统的代码。按照以下步骤完成此步骤:

  1. 在文本编辑器中打开JDBCQueryByPreparedStatement.java文件。

  2. 将以下代码添加到main()方法中:

         try {
             String url = "jdbc:mysql://localhost:3306/edusys";
             String username = "root";
             String password = "";
             // 建立数据库连接
             Connection connection = DriverManager.getConnection(url, username, password);
    
             // 准备带有参数占位符的 SQL 语句
             String sql = "SELECT name, salary FROM instructor WHERE salary >?";
             PreparedStatement preparedStatement = connection.prepareStatement(sql);
    
             // 设置参数值
             preparedStatement.setDouble(1, 6000);
    
             // 执行查询
             ResultSet resultSet = preparedStatement.executeQuery();
    
             // 遍历结果集
             while (resultSet.next()) {
                 String name = resultSet.getString("name");
                 double salary = resultSet.getDouble("salary");
                 System.out.println(name + " " + salary);
             }
    
             // 关闭资源
             resultSet.close();
             preparedStatement.close();
             connection.close();
         } catch (SQLException e) {
             e.printStackTrace();
         }

    这段代码连接到 MySQL 数据库,提示用户选择要查询的表,执行相应的 SQL 查询,并将结果打印到控制台。

  3. 保存JDBCQueryByPreparedStatement.java文件。

✨ 查看解决方案并练习

运行应用程序

在这最后一步中,你将运行该应用程序。

  1. 编译 Java 文件:
javac -d bin/ src/JDBCQueryByPreparedStatement.java
  1. 运行应用程序:
java -cp bin/:lib/mysql-connector-java-8.0.21.jar JDBCQueryByPreparedStatement

你应该会看到以下输出:

Srinivasan 65000.0
Wu 90000.0
Mozart 40000.0
Einstein 95000.0
El Said 60000.0
Gold 87000.0
Katz 75000.0
Califieri 62000.0
Singh 80000.0
Crick 72000.0
Brandt 92000.0
Kim 80000.0

恭喜!你已成功完成该项目。

✨ 查看解决方案并练习

总结

恭喜!你已完成这个项目。你可以在 LabEx 中练习更多实验来提升你的技能。