簡體   English   中英

如何在不調用execSQL的情況下刪除SQLite表IF EXISTS?

[英]How to delete SQLite table IF EXISTS without calling execSQL?

來自與Douglas Crockford一起學習Java的背景下,他特別強調不使用eval,並且受教育的背景表明,使用像exec這樣的具有安全漏洞的通用掩蓋方法只是一種不好的形式,無論如何都可以刪除SQLite表格是否存在,而不必訴諸execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE)嗎? 當前的方法文檔似乎建議execSQL是唯一的方法,因為唯一的刪除方法是:

刪除數據庫中行的便捷方法。

deleteDatabase用於數據庫,而不用於表。

要執行DROP TABLE IF EXISTS,請使用execSQL

這不是JavaScript, eval可以從JavaScript內部執行JavaScript語句。 SQL是與Java不同的語言,因此構造SQL字符串是執行SQL的唯一方法。

除非攻擊者能夠控制DATABASE_TABLE符號的內容,否則沒有安全漏洞。

如果execSQL函數對您來說太通用,則創建一個dropTableIfExists幫助程序函數,該函數為您設置字符串格式(並正確引用標識符 )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM