Menggunakan PreparedStatement dengan IN Parameter Klausa
Soalan:
Bagaimana anda boleh mengisi yang disediakan pernyataan dalam JDBC dengan senarai parameter dalam klausa IN? Ini amat penting apabila senarai parameter mungkin tidak diketahui terlebih dahulu.
Penyelesaian:
Untuk membina klausa IN secara dinamik dengan berbilang nilai, ikut langkah berikut:
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 }
Pendekatan ini membolehkan anda mengendalikan berbilang atau parameter tidak diketahui secara dinamik.
Penyelesaian Alternatif Menggunakan 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 + ")";
Ikuti langkah yang sama seperti di atas untuk menyediakan pernyataan dan tetapkan nilai.
Atas ialah kandungan terperinci Bagaimana untuk Menggunakan PreparedStatements dengan Parameter Klausa IN Dinamik dalam JDBC?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!