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:///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:///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:///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:\>
廣告

© . All rights reserved.