Melaksanakan Berbilang Pertanyaan dalam Java dalam Satu Pernyataan
JDBC biasanya menimbulkan pengecualian apabila cuba melaksanakan berbilang pertanyaan dalam satu pernyataan, a ciri tersedia dalam pelayar pertanyaan MySQL. Walau bagaimanapun, terdapat dua pendekatan yang memudahkan fungsi ini:
Pendekatan 1: Mengkonfigurasi Berbilang Pertanyaan
Tetapkan sifat sambungan "allowMultiQueries" kepada "true" dalam URL pangkalan data untuk mendayakan berbilang pertanyaan yang dipisahkan oleh koma bertitik. Ini harus dinyatakan semasa permintaan sambungan.
String dbUrl = "jdbc:mysql:///test?allowMultiQueries=true";
Daripada menggunakan "executeBatch," gunakan "execute(String sql)" untuk mendapatkan semula hasil pelaksanaan pertanyaan. Ulangi hasil dan prosesnya menggunakan langkah berikut:
boolean hasMoreResultSets = stmt.execute(multiQuerySqlString); READING_QUERY_RESULTS: while (hasMoreElementsResultSets || stmt.getUpdateCount() != -1) { if (hasMoreElementsResultSets) { ResultSet rs = stmt.getResultSet(); // Handle result set here } else { // DDL/DML operation int queryResult = stmt.getUpdateCount(); if (queryResult == -1) { // No more queries break READING_QUERY_RESULTS; } // Handle success, failure, or generated keys here } hasMoreElementsResultSets = stmt.getMoreResults(); }
Pendekatan 2: Prosedur Tersimpan dengan Kursor
Buat prosedur tersimpan yang melaksanakan berbilang pertanyaan, termasuk pilih dan penyata DML. Panggil prosedur ini daripada Java menggunakan "CallableStatement." Pendekatan ini membolehkan anda menangkap berbilang ResultSets. Walau bagaimanapun, hasil DML tidak boleh ditangkap secara langsung.
CallableStatement cstmt = con.prepareCall("call multi_query()"); boolean hasMoreResultSets = cstmt.execute(); READING_QUERY_RESULTS: while (hasMoreElementsResultSets) { ResultSet rs = stmt.getResultSet(); // Handle result set here }
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melaksanakan Berbilang Pertanyaan SQL dalam Pernyataan Java Tunggal?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!