Rumah > Java > javaTutorial > Bagaimana untuk Menggunakan PreparedStatements dengan Parameter Klausa IN Dinamik dalam JDBC?

Bagaimana untuk Menggunakan PreparedStatements dengan Parameter Klausa IN Dinamik dalam JDBC?

Patricia Arquette
Lepaskan: 2024-12-16 03:42:10
asal
707 orang telah melayarinya

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

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:

  1. Buat pemegang tempat untuk setiap nilai dalam klausa IN, menggunakan tanda soal (?):
var stmt = String.format("select * from test where field in (%s)",
                         values.stream()
                         .map(v -> "?")
                         .collect(Collectors.joining(", ")));
Salin selepas log masuk
  1. Sediakan pernyataan menggunakan rentetan yang dibina:
PreparedStatement pstmt = connection.prepareStatement(stmt);
Salin selepas log masuk
  1. Tetapkan nilai dalam klausa IN, satu demi satu, bermula dari indeks 1:
int index = 1;
for (Object o : values) {
    pstmt.setObject(index++, o); // Replace with appropriate data type
}
Salin selepas log masuk

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 + ")";
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan