首頁 > Java > java教程 > 如何在 JDBC 中使用帶有動態 IN 子句參數的PreparedStatements?

如何在 JDBC 中使用帶有動態 IN 子句參數的PreparedStatements?

Patricia Arquette
發布: 2024-12-16 03:42:10
原創
707 人瀏覽過

How to Use PreparedStatements with Dynamic IN Clause Parameters in JDBC?

使用帶有IN子句參數的PreparedStatement

問題:

問題:<p><strong>解決方案:</strong></p><p>要動態建構多個值的IN 子句,請依照下列步驟操作:</p><ol><li>使用問號為IN子句中的每個值建立一個佔位符(?):</li></ol><pre class="brush:php;toolbar:false">var stmt = String.format("select * from test where field in (%s)", values.stream() .map(v -> "?") .collect(Collectors.joining(", ")));
登入後複製
  1. 使用建構的字串準備語句:
PreparedStatement pstmt = connection.prepareStatement(stmt);
登入後複製
  1. 設定IN子句中的值,一一從索引1開始:
int index = 1;
for (Object o : values) {
    pstmt.setObject(index++, o); // Replace with appropriate data type
}
登入後複製

這種做法允許您動態處理多個或未知參數。

使用 StringBuilder 的替代解決方案:

List<String> values = ...;
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 + ")";
登入後複製

按照與上述相同的步驟準備語句並設定值.

以上是如何在 JDBC 中使用帶有動態 IN 子句參數的PreparedStatements?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板