如何在不调用execSQL的情况下删除SQLite表IF EXISTS?

时间:2014-07-21 18:53:31

标签: java android sqlite

来自于道格拉斯·克罗克福德(Douglas Crockford)教授Javascript的背景,他非常重视不使用eval,以及使用像exec这样构成安全漏洞的一般毯子方法的教育背景,无论如何都是删除一个SQLite表,如果它存在而不必诉诸execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE)current method documentation似乎表明execSQL是唯一的方法,因为唯一的删除方法是:

  

删除数据库中行的便捷方法。

和deleteDatabase用于数据库,而不是表。

1 个答案:

答案 0 :(得分:2)

要执行DROP TABLE IF EXISTS,请使用execSQL

这不是JavaScript,eval可以在JavaScript中执行JavaScript语句。 SQL是一种与Java不同的语言,因此构造SQL字符串是执行SQL的唯一方法。

除非攻击者能够控制DATABASE_TABLE符号的内容,否则没有安全漏洞。

如果execSQL函数对您来说过于通用,请创建一个dropTableIfExists辅助函数,为您格式化字符串(以及quotes the identifier正确)。