我試圖將String
的ArrayList
插入到sqlite數據庫的表中。如何通過VALUES在循環中防止sql注入
我寫了一個循環,將String
從ArrayList
添加到使用android.database.sqlite.SQLiteOpenHelper
的sqlite數據庫查詢中。
查詢對於sql注入很脆弱,並且不是最優的。我發現這些鏈接 using PreparedStatement,using SQLiteStatement。我還沒有找到在這樣的循環中防止sql注入的例子。爲了演示,我已經在示例中將ArrayList
的初始化。
ArrayList<String> descriptions = new ArrayList<>();
SQLiteDatabase db = this.getWritableDatabase();
String addBulkQuery = "INSERT INTO " + TABLE_DESCRIPTIONS + "(" + KEY_ID + ", " + KEY_DESCRIPTION + ") VALUES";
if (descriptions.size() > 0) {
addBulkQuery += "(" + id + ", " + descriptions.get(0) + ")";
for (int i = 1; i < descriptions.size(); i++) {
addBulkQuery += ", (" + id + ", " + descriptions.get(i) + ")";
}
}
什麼將是最安全的解決方案的的ArrayList
String
S或Object
s到SQLite數據庫添加?
http://stackoverflow.com/a/34619804/5018798 –
@GavinHarris我明白,如果我插入一行,它將如何工作。這就是我的文章中的兩個超鏈接和你的文章中的超鏈接。我寧願不要爲我插入的每一行執行單獨的插入語句。我寧願將所有要插入「VALUES」子句的行都放入。 – Janneman96
這個答案有幫助嗎?實際上,您可以創建任何用戶可以輸入綁定參數的內容。你可以構造你的SQL來接受'n'個參數,你只需要跟蹤參數的數量並在execSQL上傳入正確的數字。 –