Menggunakan Nama Lajur sebagai Parameter Input dalam PreparedStatements
Dalam aplikasi pangkalan data Java, PreparedStatement digunakan untuk melaksanakan pernyataan SQL secara dinamik. Walau bagaimanapun, persoalan biasa timbul: bolehkah kita menentukan nama lajur sebagai parameter input? Artikel ini meneroka isu ini dan memberikan jawapan.
Latar Belakang
Menggunakan PreparedStatement membolehkan anda menetapkan nilai khusus sebagai parameter, menghalang serangan suntikan SQL. Walau bagaimanapun, secara lalai, hanya nilai lajur boleh ditetapkan sebagai parameter.
Isunya
Pengguna ingin membuat pertanyaan yang menggabungkan dua jadual (A dan B) dan menapis keputusan berdasarkan perbandingan antara lajur X jadual A dan parameter input. Walau bagaimanapun, pengguna mahu parameter ini menjadi lajur Y jadual B.
Penyelesaian
JDBC, API sambungan pangkalan data Java, tidak membenarkan penggunaan nama lajur sebagai parameter input dalam PreparedStatements. Hanya nilai literal atau pembolehubah mengikat boleh ditentukan sebagai parameter.
Oleh itu, tidak mungkin untuk mencapai kefungsian yang diingini menggunakan PreparedStatement secara langsung. Sebaliknya, pernyataan SQL mesti diubah suai untuk memasukkan nilai lajur Y sebagai literal sebelum membuat PreparedStatement. Ini memerlukan pembinaan rentetan SQL secara manual, yang tidak disyorkan kerana risiko serangan suntikan SQL.
Penyelesaian Alternatif
Untuk mengelakkan suntikan SQL, adalah dinasihatkan untuk gunakan pendekatan alternatif, seperti:
Atas ialah kandungan terperinci Bolehkah Nama Lajur Digunakan sebagai Parameter Input dalam Java PreparedStatements?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!