使用帶有IN 子句參數清單的PreparedStatement
在JDBC 中,PreparedStatement 介面支援使用動態設定的參數值執行。一種常見場景涉及利用 IN 子句基於多個值檢索資料。
帶有IN 子句的查詢語法
以下語法示範了使用以下查詢的範例IN 子句:
connection.prepareStatement("Select * from test where field in (?)");
處理多個值
如果IN子句需要多個值,有兩種方法可以處理這種情況:
1。已知參數清單:
var stmt = String.format("select * from test where field in (%s)", values.stream() .map(v -> "?") .collect(Collectors.joining(", ")));
2.未知參數清單:
StringBuilder builder = new StringBuilder(); for( int i = 0 ; i < values.size(); i++ ) { builder.append("?,"); } String placeHolders = builder.deleteCharAt( builder.length() -1 ).toString(); String stmt = "select * from test where field in ("+ placeHolders + ")";
設定參數值
準備好查詢字串後,使用PreparedStatement 的setObject 方法設定參數值。應針對每個值更新參數的索引。例如:
int index = 1; for( Object o : values ) { pstmt.setObject( index++, o ); }
以上是如何有效地將PreparedStatement與IN子句一起用於多個參數值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!