我想知道在execSQL方法中可以使用1或2个参数。
如果可以使用对象直接对SQLite数据库执行操作,为什么还要使用第二种方法?

例如:

db.execSQL("INSERT INTO "+ TableName +" VALUES (null, ?)",
        new Object[] { type.getName() })


这比使用这个更好吗

db.execSQL("INSERT INTO "+ TableName +" VALUES (null,"+  type.getName() +")")


第一个例子更安全吗?
执行时更快?
更容易阅读...
还是一样?

最佳答案

方法1更好。

例如,它可以避免SQL注入。
因为它为您处理数据类型。

这意味着它在需要时通过添加字符串定界符并转换撇号来转换字符串。

即:

为了正常工作,您应该编写方法2,例如

db.execSQL("INSERT INTO " + TableName + " VALUES (null, '" +  type.getName().replace("'", "''") + "')");


所以...

is the 1st example more secure?是的。
faster when executing?不确定是否。
easier to read是的,一旦您习惯了(主要是基于意见)。
... or is it the same?不,关于上面讨论的内容。

10-07 20:57