Menetapkan Parameter dalam Klausa IN dengan PreparedStatements
Dalam Java Database Connectivity (JDBC), pernyataan yang disediakan menawarkan cara yang cekap dan selamat untuk melaksanakan SQL pertanyaan dengan parameter dinamik. Apabila bekerja dengan klausa IN, yang memerlukan berbilang nilai untuk menjadi sebahagian daripada syarat, ia menjadi perlu untuk mengendalikan tetapan parameter dengan tepat.
Pertimbangkan senario yang diterangkan dalam soalan:
connection.prepareStatement("Select * from test where field in (?)");
Ini pernyataan yang disediakan menjangkakan satu parameter, yang biasanya ditetapkan menggunakan setObject(). Walau bagaimanapun, jika klausa IN perlu mengandungi berbilang nilai, pendekatan berbeza diperlukan.
Mengendalikan Senarai Dinamik Parameter
Apabila senarai parameter tidak diketahui terlebih dahulu atau boleh berbeza dalam saiz, teknik berikut boleh digunakan:
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 + ")";
var stmt = String.format("select * from test where field in (%s)", values.stream().map(v -> "?").collect(Collectors.joining(", ")));
Menetapkan Nilai Parameter
Setelah pernyataan SQL yang mengandungi pemegang tempat parameter sedia, ia boleh digunakan untuk mencipta objek PreparedStatement. Setiap nilai dalam senarai kemudiannya diberikan kepada pemegang tempat yang sepadan menggunakan kaedah setObject():
int index = 1; for (Object o : values) { pstmt.setObject(index++, o); }
Dengan mengikuti teknik ini, adalah mungkin untuk mencipta pernyataan yang disediakan dengan klausa IN yang boleh mengendalikan senarai dinamik parameter , meningkatkan fleksibiliti dan kecekapan pertanyaan JDBC.
Atas ialah kandungan terperinci Bagaimana untuk Cekap Menggunakan PreparedStatements dengan Klausa IN dalam JDBC?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!