Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Meratakan Klausa IN dengan Selamat dalam Android SQL Queries?
Mengparameterkan Klausa IN dengan selamat dalam Android SQL
Bekerja dengan data dinamik dalam klausa SQL IN
Android memerlukan pengendalian yang teliti untuk mengelakkan kelemahan suntikan SQL. Panduan ini menunjukkan kaedah selamat menggunakan ruang letak.
Menggunakan Pemegang Tempat untuk Keselamatan
Pendekatan paling selamat melibatkan mencipta rentetan ruang letak dengan koma yang memisahkan tanda soal. Bilangan ruang letak secara langsung sepadan dengan bilangan nilai dalam klausa IN
anda. Rentetan ini kemudiannya disepadukan ke dalam pertanyaan SQL anda, memastikan data anda selamat daripada serangan suntikan.
Contoh Praktikal
Mari andaikan anda mempunyai fungsi makePlaceholders(int len)
yang menjana rentetan ruang letak ini. Fungsi ini memastikan rentetan tanda soal yang diformat dengan betul, tanpa mengira bilangan nilai. Begini cara ia digunakan:
<code class="language-java">String query = "SELECT * FROM table WHERE name IN (" + makePlaceholders(names.length) + ")"; Cursor cursor = mDb.rawQuery(query, names);</code>
makePlaceholders
Pelaksanaan Fungsi
Kemungkinan pelaksanaan fungsi makePlaceholders
ialah:
<code class="language-java">String makePlaceholders(int len){ if (len < 1) { throw new IllegalArgumentException("Length must be at least 1"); } else if (len == 1) { return "?"; } else { StringBuilder sb = new StringBuilder(len * 2).append("?"); for (int i = 1; i < len; i++) { sb.append(",?"); } return sb.toString(); } }</code>
Ini memastikan bilangan ruang letak yang betul dan menghalang ralat untuk kes tepi (nilai tunggal). Menggunakan kaedah ini menyediakan cara yang fleksibel dan selamat untuk mengendalikan data dinamik dalam klausa IN
anda, melindungi daripada suntikan SQL.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Meratakan Klausa IN dengan Selamat dalam Android SQL Queries?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!