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:///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:///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:///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:\>
廣告
© . All rights reserved.