Bolehkah penyata yang disediakan JDBC mengendalikan nama lajur yang ditentukan secara dinamik?
Apabila menggunakan pernyataan yang disediakan JDBC dalam Java, anda mungkin menghadapi senario di mana anda perlu menentukan secara dinamik nama lajur yang dikembalikan dalam pertanyaan SQL. Walaupun nama jadual boleh ditentukan secara dinamik, nama lajur tidak boleh.
Punca utama terletak pada sifat pernyataan yang disediakan. Tujuan utamanya adalah untuk menghalang serangan suntikan SQL dengan menyahganding metadata pernyataan (seperti nama lajur) daripada parameter dinamik yang disuntik ke dalam pertanyaan. Mengikut reka bentuk, nama lajur mesti diketahui secara statik dan dinyatakan pada masa penyediaan, dengan itu menghalang pengubahsuaian semasa pelaksanaan.
Dalam contoh, baris kod berikut cuba menetapkan nama lajur sebagai parameter:
<code>stmt.setString(1, columnNames);</code>
Walau bagaimanapun, ini memberikan rentetan literal "d,e,f" kepada ruang letak lajur dan bukannya nama lajur sebenar. Untuk mengatasi had ini, pertimbangkan alternatif berikut:
Ringkasnya, walaupun tidak mungkin untuk menentukan nama lajur pembolehubah secara langsung menggunakan pernyataan yang disediakan, anda boleh mencapai fungsi ini dengan berhati-hati menggunakan alternatif yang dicadangkan atau mengubah suai reka bentuk pangkalan data anda. Apabila berurusan dengan pertanyaan SQL dinamik, sentiasa utamakan keselamatan dan ikuti amalan terbaik untuk mencegah serangan suntikan SQL.
Atas ialah kandungan terperinci Bolehkah Penyata Disediakan dalam JDBC Mengendalikan Nama Lajur Yang Ditentukan Secara Dinamik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!