Mendapatkan SQL Sebenar Dilaksanakan oleh PreparedStatement
Dalam pengaturcaraan Java, kaedah utiliti biasa ditemui yang membuka sambungan pangkalan data, membina PreparedStatement, laksanakannya dan mengembalikan set hasil. Untuk tujuan penyahpepijatan, log penyataan SQL sebenar yang telah dilaksanakan akan bermanfaat, tetapi hanya mengelog templat SQL asal (dengan ruang letak) tidak mencukupi.
Tidak Dapat Mendapatkan SQL PreparedStatement
Malangnya, disebabkan sifat kenyataan yang disediakan, tiada cara untuk mendapatkan semula pertanyaan SQL sebenar yang akan dilaksanakan. Pernyataan yang disediakan dibahagikan kepada dua komponen: pernyataan itu sendiri (dengan ruang letak) dan pembolehubah terikat. Pelayan pangkalan data menganalisis dan menghuraikan pernyataan, dan pembolehubah terikat digunakan untuk melaksanakan pernyataan. Walau bagaimanapun, tiada pembinaan semula pertanyaan SQL sebenar berlaku sama ada pada bahagian Java atau pangkalan data.
Alternatif Penyahpepijatan
Untuk tujuan penyahpepijatan, terdapat dua penyelesaian alternatif:
Contoh
Pertimbangkan pernyataan dengan pemegang tempat:
SELECT * FROM USERS WHERE ID = ?
Dan pembolehubah terikat:
int userId = 123;
Pertanyaan SQL manual ialah:
SELECT * FROM USERS WHERE ID = 123
Yang kemudiannya akan dilog untuk tujuan nyahpepijat.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan SQL Sebenar Dilaksanakan oleh PreparedStatement di Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!