JDBC - LIKE 子句



本章提供使用 JDBC 应用程序从表中选择记录的示例。这将使用 LIKE 子句添加附加条件,以便从表中选择记录。在执行以下示例之前,请确保已完成以下步骤:

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

  • 您的 MySQL 或您正在使用的任何数据库正在运行。

所需步骤

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

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

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

  • 执行查询 - 需要使用 Statement 类型对象来构建和提交 SQL 语句,以获取满足给定条件的表中的记录。此查询使用LIKE子句选择记录,以选择所有名字以“za”开头的学生。

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

示例:从表中选择记录

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

接下来,我们准备了一个带有 LIKE 子句的 SQL 查询,以获取名字包含“za”的结果。使用 statement.executeQuery() 方法执行查询,其中相关的记录被提取并存储在 ResultSet 对象中。ResultSet 被迭代并打印记录。

将以下示例复制并粘贴到 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 first LIKE '%za%'";
         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: 100, Age: 30, First: Zara, Last: Ali
ID: 102, Age: 30, First: Zaid, Last: Khan
C:\>

示例:从表中选择记录

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

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

import java.sql.*;

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 studentID, firstName, lastName from students where lastName like 'A%'";
         ResultSet rs = stmt.executeQuery(sel_qry);
         System.out.println("Displaying records where LastName begins with 'A'" );
         System.out.println("-------------------------------------------------------");
         while(rs.next()){
            System.out.print("studentID: " + rs.getInt(1));
            System.out.print(", FirstName: " + rs.getString(2));
            System.out.println(", LastName: " + 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 where LastName begins with 'A'
-------------------------------------------------------
studentID: 1000, FirstName: Bonny, LastName: Agarwal
studentID: 1004, FirstName: Mohammed, LastName: Ali
--------------------------------------------

C:\>

示例:从表中选择记录

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

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

import java.sql.*;

// This class demonstrates use of LIKE with underscore '_'
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 * from employees where age like '5_'";
         ResultSet rs = stmt.executeQuery(sel_qry);
         System.out.println("Displaying records where age begins with 5 and has only one literal after it." );
         System.out.println("-------------------------------------------------------");
         while(rs.next()){
            System.out.print(" ID: " + rs.getInt(1));
            System.out.print(", AGE: " + rs.getInt(2));
            System.out.print(", FirstName: " + rs.getString(3));
            System.out.println(", LastName: " + rs.getString(4));
         } 
         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 where age begins with 5 and has only one literal after it.
-------------------------------------------------------
 ID: 1, AGE: 50, FirstName: Shahbaz, LastName: Ali
 ID: 35, AGE: 51, FirstName: Raksha, LastName: Agarwal
--------------------------------------------


C:\>
广告