首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

JDBC 調用存儲過程實戰(五):模糊查詢存儲過程與 Java 調用

     編輯:Java 相關知識

本篇演示如何編寫支援模糊查詢的存儲過程(使用 LIKE 通配符),並在 Java 中傳入查詢關鍵字、獲取結果集。

存儲過程定義

create procedure FindCusts
    @cust varchar(10)
as
    select customerid from orders where customerid like '%' + @cust + '%'

執行測試:execute FindCusts 'alfki'

Java 調用代碼

import java.sql.*;

public class ProcedureTest {
    public static void main(String args[]) throws Exception {
        DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver());
        Connection conn = DriverManager.getConnection("jdbc:odbc:mydata", "sa", "");

        // 1. 準備調用,單一輸入參數
        CallableStatement c = conn.prepareCall("{call FindCusts(?)}");
        // 2. 設置參數值
        c.setString(1, "Tom");

        // 3. 執行查詢
        ResultSet rs = c.executeQuery();

        // 4. 遍歷結果集
        while (rs.next()) {
            String cust = rs.getString("customerid");
            System.out.println(cust);
        }

        c.close();
        conn.close();
    }
}

技術要點

  • 通配符處理:存儲過程內部拼接 '%' + @cust + '%',Java 傳入純關鍵字即可,避免在應用層拼接 SQL 片段。
  • 單參數調用:{call FindCusts(?)} 只有一個佔位符,setString(1, "Tom") 設置。
  • 結果集獲取:存儲過程返回結果集時,必須使用 executeQuery() 而非 execute()。

擴展思考

若需支援多條件動態模糊查詢,可考慮:

  1. 存儲過程接收多個可選參數,內部動態構建 WHERE 條件。
  2. 或在 Java 層使用 PreparedStatement 動態拼接 SQL(靈活但失去存儲過程封裝優勢)。
  3. 大數據量模糊查詢建議使用全文檢索引擎(Elasticsearch、Solr)而非 LIKE。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved