JDBC - WHERE 子句



本章提供使用 JDBC 应用程序从表中选择记录的示例。这将在从表中选择记录时使用 WHERE 子句添加其他条件。在执行以下示例之前,请确保您已准备好以下内容:-

  • 要执行以下示例,您可以将用户名密码替换为您实际的用户名和密码。

  • 您的 MySQL 或您正在使用的任何数据库都已启动并正在运行。

必要步骤

使用 JDBC 应用程序创建新数据库需要以下步骤:-

  • 导入包 - 需要包含数据库编程所需的 JDBC 类所在的包。大多数情况下,使用import java.sql.*就足够了。

  • 注册 JDBC 驱动程序 - 需要初始化驱动程序,以便您可以打开与数据库的通信通道。

  • 打开连接 - 需要使用DriverManager.getConnection()方法创建一个 Connection 对象,该对象表示与数据库服务器的物理连接。

  • 执行查询 - 需要使用 Statement 类型的对象来构建和提交 SQL 语句以从表中提取记录,这些记录满足给定条件。此查询使用WHERE子句来选择记录。

  • 清理环境 - try with resources 自动关闭资源。

示例:根据给定条件从表中选择记录

在此示例中,我们有四个静态字符串,包含数据库连接 URL、用户名、密码和 SELECT 查询。现在使用 DriverManager.getConnection() 方法,我们准备了一个数据库连接。连接准备就绪后,我们使用 createStatement() 方法准备了一个 Statement 对象。下一步,我们通过调用 statement.executeQuery() 方法在 REGISTRATION 表上准备并执行了 SELECT 查询。所有记录都被提取并存储在 ResultSet 对象中。迭代 ResultSet 并打印所有记录。

现在,以类似的方式触发另一个带有 WHERE 子句的查询。此查询仅限制 ID 大于 101 的记录。提取并打印记录。

将以下示例复制并粘贴到 JDBCExample.java 中,编译并按如下方式运行:-

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class JDBCExample {
   static final String DB_URL = "jdbc:mysql://127.0.0.1/TUTORIALSPOINT";
   static final String USER = "guest";
   static final String PASS = "guest123";
   static final String QUERY = "SELECT id, first, last, age FROM Registration";

   public static void main(String[] args) {
      // Open a connection
      try(Connection conn = DriverManager.getConnection(DB_URL, USER, PASS);
         Statement stmt = conn.createStatement();) {		      
         System.out.println("Fetching records without condition...");
         ResultSet rs = stmt.executeQuery(QUERY);
         while(rs.next()){
            //Display values
            System.out.print("ID: " + rs.getInt("id"));
            System.out.print(", Age: " + rs.getInt("age"));
            System.out.print(", First: " + rs.getString("first"));
            System.out.println(", Last: " + rs.getString("last"));
         }

         // Select all records having ID equal or greater than 101
         System.out.println("Fetching records with condition...");
         String sql = "SELECT id, first, last, age FROM Registration" +
            " WHERE id >= 101 ";
         rs = stmt.executeQuery(sql);

         while(rs.next()){
            //Display values
            System.out.print("ID: " + rs.getInt("id"));
            System.out.print(", Age: " + rs.getInt("age"));
            System.out.print(", First: " + rs.getString("first"));
            System.out.println(", Last: " + rs.getString("last"));
         }
         rs.close();
      } catch (SQLException e) {
         e.printStackTrace();
      } 
   }
}

输出

现在让我们按如下方式编译上述示例:-

C:\>javac JDBCExample.java
C:\>

当您运行JDBCExample时,它会产生以下结果:-

C:\>java JDBCExample
Fetching records without condition...
ID: 100, Age: 30, First: Zara, Last: Ali
ID: 102, Age: 30, First: Zaid, Last: Khan
ID: 103, Age: 28, First: Sumit, Last: Mittal
Fetching records with condition...
ID: 102, Age: 30, First: Zaid, Last: Khan
ID: 103, Age: 28, First: Sumit, Last: Mittal
C:\>

示例:根据多个条件从表中选择记录

在此示例中,我们有三个静态字符串,包含数据库连接 URL、用户名和密码。现在使用 DriverManager.getConnection() 方法,我们准备了一个数据库连接。连接准备就绪后,我们使用 createStatement() 方法准备了一个 Statement 对象。下一步,我们通过调用 statement.executeQuery() 方法在 employees 表上准备并执行了 SELECT 查询。此查询限制了 ID 大于 1 且员工年龄大于 20 的记录。提取并打印记录。

将以下示例复制并粘贴到 JDBCExample.java 中,编译并按如下方式运行:-

import java.sql.*;

// This class demonstrates use of multiple conditions on WHERE
public class JDBCExample {

   static final String DB_URL = "jdbc:mysql://127.0.0.1/TUTORIALSPOINT";
   static final String USER = "root";
   static final String PASS = "guest123";

   public static void main(String args[]) {
      try{
         Connection conn = DriverManager.getConnection(DB_URL, USER, PASS);
         Statement stmt = conn.createStatement();
         String sel_qry = "select id, first, last from employees where id > 1 and age > 20";
         ResultSet rs = stmt.executeQuery(sel_qry);

         System.out.println("Displaying records depending on the conditions set in WHERE clause");
         System.out.println("-------------------------------------------------------");
         while(rs.next()){
            System.out.print("id: " + rs.getInt(1));
            System.out.print(", First: " + rs.getString(2));
            System.out.println(", Last: " + rs.getString(3));
         }

         System.out.println("--------------------------------------------");

         rs.close();
         stmt.close();
         conn.close();

      }catch( SQLException e){
         e.printStackTrace();
      }
   }
}

输出

现在让我们按如下方式编译上述示例:-

C:\>javac JDBCExample.java
C:\>

当您运行JDBCExample时,它会产生以下结果:-

C:\>java JDBCExample
Displaying records depending on the conditions set in WHERE clause
-------------------------------------------------------
id: 2, First: Mahnaz, Last: Fatma
id: 4, First: Sumit, Last: Mittal
id: 21, First: Jeevan, Last: Rao
id: 22, First: Aditya, Last: Chaube
id: 25, First: Jeevan, Last: Rao
id: 26, First: Aditya, Last: Chaube
id: 34, First: Ahmed, Last: Ali
id: 35, First: Raksha, Last: Agarwal
--------------------------------------------

C:\>

示例:根据给定条件更新表的记录

在此示例中,我们有三个静态字符串,包含数据库连接 URL、用户名和密码。现在使用 DriverManager.getConnection() 方法,我们准备了一个数据库连接。连接准备就绪后,我们使用 createStatement() 方法准备了一个 Statement 对象。下一步,我们通过调用 statement.executeUpdate() 方法在 employees 表上准备并执行了一个 UPDATE 查询。此查询更新了 ID 为 22 的记录的姓和名。

然后,我们通过调用 statement.executeQuery() 方法在 employees 表上执行了 SELECT 查询以选择特定记录。结果存储在 ResultSet 对象中。迭代 ResultSet 并打印记录以显示更新的值。

提取并打印记录。

将以下示例复制并粘贴到 JDBCExample.java 中,编译并按如下方式运行:-

import java.sql.*;

// This class demonstrates use of WHERE clause in an UPDATE statement
public class JDBCExample {

   static final String DB_URL = "jdbc:mysql://127.0.0.1/TUTORIALSPOINT";
   static final String USER = "root";
   static final String PASS = "guest123";

   public static void main(String args[]) {
      try{
         Connection conn = DriverManager.getConnection(DB_URL, USER, PASS);
         Statement stmt = conn.createStatement();
         String upd_qry = "update employees set first='Dinesh', last='Kumar' where id=22";
         stmt.executeUpdate(upd_qry);
         ResultSet rs = stmt.executeQuery("select id, first, last from employees where id=22");
         System.out.println("Displaying records depending on the conditions set in WHERE clause");
         System.out.println("-------------------------------------------------------");
         while(rs.next()){
            System.out.print("id: " + rs.getInt(1));
            System.out.print(", First: " + rs.getString(2));
            System.out.println(", Last: " + rs.getString(3));
         }

         System.out.println("--------------------------------------------");

         rs.close();
         stmt.close();
         conn.close();
      }catch( SQLException e){
         e.printStackTrace();
      }
   }
}

输出

现在让我们按如下方式编译上述示例:-

C:\>javac JDBCExample.java
C:\>

当您运行JDBCExample时,它会产生以下结果:-

C:\>java JDBCExample
Displaying records depending on the conditions set in WHERE clause
-------------------------------------------------------
id: 22, First: Dinesh, Last: Kumar
--------------------------------------------


C:\>
广告