我正在使用Java PreparedStatment對象構造一系列批處理的INSERT查詢。查詢語句的格式爲...如何使用java編寫語句的表名變量插入
String strQuery = "INSERT INTO ? (col1, col2, col3, col4, col5) VALUES (?,?,?,?,?,?);";
...所以無論字段值和表名是變量(即我有同樣的列格式的每個插入將被引導到多個表不同的)。如果我刪除「?」,我可以讓執行程序工作。表名變量和硬代碼,但每一製備的聲明將被插入到一個不同的表,所以需要保持一個變量我填充之前立即執行使用批量查詢...
stmt.setString(1, "tableName1");
我怎樣才能讓這成爲一個充滿活力可變嗎?
謝謝大家......好像我不知道要插入的表名,直到交換每行的變量爲止,最好的辦法是在DB存儲過程中構建插入。然後將每行的所有參數傳遞給存儲過程,然後讓DB處理表名操作。無論如何感謝人們的答覆。 :-) – ForestSDMC
這是否意味着SQL注入保護對於動態表名是不可能的? –
@Richard我得出了同樣的結論,聽起來很愚蠢,但至少可以根據數據庫中可用表的列表來檢查表名。 – JulienD