Rumah  >  Artikel  >  Java  >  Bagaimana untuk Mendapatkan SQL Sebenar Dilaksanakan oleh PreparedStatement di Java?

Bagaimana untuk Mendapatkan SQL Sebenar Dilaksanakan oleh PreparedStatement di Java?

Patricia Arquette
Patricia Arquetteasal
2024-11-11 08:42:02499semak imbas

How to Get the Actual SQL Executed by a PreparedStatement in Java?

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:

  1. Kod Penyata Output: Log kod penyata dengan ruang letak dan senarai pembolehubah terikat.
  2. Bina Pertanyaan SQL Manual: Bina SQL pertanyaan secara manual dengan menggabungkan kod pernyataan dengan nilai pembolehubah terikat.

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!

Kenyataan:
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