IN 句パラメータで PreparedStatement を使用する
質問:
準備されたステートメントをどのように設定できますかIN 句にパラメータのリストを含む JDBC ステートメント?これは、パラメータのリストが事前にわからない場合に特に重要です。
解決策:
複数の値を含む IN 句を動的に構築するには、次の手順に従います。
var stmt = String.format("select * from test where field in (%s)", values.stream() .map(v -> "?") .collect(Collectors.joining(", ")));
PreparedStatement pstmt = connection.prepareStatement(stmt);
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 句パラメータで PreparedStatement を使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。