我试图阻止注入在我的触发器(创建或不依赖于首选项)。使用SQLite触发器与参数
我使用
公共无效execSQL(SQL字符串,对象[] bindArgs)
我有我的触发一个 “?”并在bindArgs中传递我的值。
的问题是,我创建触发器
03-13 13:43:49.136: E/SQLiteLog(21865): (1) trigger cannot use variables
03-13 13:43:49.137: W/System.err(21865): android.database.sqlite.SQLiteException: trigger cannot use variables (code 1): , while compiling:
CREATE TRIGGER IF NOT EXISTS
my_trigger
INSERT ON table_1 BEGIN DELETE
FROM table_2
WHERE col1 = new.col1
AND col2 = ?
END;
它看起来像我不能使用参数以创建触发器查询,但我不明白为什么的过程中收到错误。如果我替换“?”我在字符串的值,并使用
公共无效execSQL(SQL字符串)
这项工作得很好,但我想创建一个字符串值,触发了我不想检查SQLInjection。
任何人解释为什么我不能使用
公共无效execSQL(SQL字符串,对象[] bindArgs)
的触发(即使android documentation说,否则)
例如,以下是使用此方法的好候选者:
创建或删除表/触发/视图/索引/虚拟表
...
那么,我只是要创建一个很好的方法来防止注射,我会很好。再次感谢! – AxelH 2015-03-13 13:30:56