Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android SQLiteDatabase.query是否使用PreparedStatements?_Android_Sqlite_Prepared Statement - Fatal编程技术网

Android SQLiteDatabase.query是否使用PreparedStatements?

Android SQLiteDatabase.query是否使用PreparedStatements?,android,sqlite,prepared-statement,Android,Sqlite,Prepared Statement,当我在Android中使用用户输入查询数据库时,我通常使用SelectionArgs,并正确使用SelectionArgs Cursor cursor = db.query(UserEntity.TABLE, new String[]{UserEntity.COLUMN_ID, UserEntity.COLUMN_USERNAME, UserEntity.COLUMN_FIRSTNAME,UserEntity.COLUMN_LASTNAME,...},

当我在Android中使用用户输入查询数据库时,我通常使用SelectionArgs,并正确使用SelectionArgs

Cursor cursor = db.query(UserEntity.TABLE,
            new String[]{UserEntity.COLUMN_ID, UserEntity.COLUMN_USERNAME, UserEntity.COLUMN_FIRSTNAME,UserEntity.COLUMN_LASTNAME,...},
            UserEntity.COLUMN_USERNAME + "=?",
            new String[]{username},
            null, null, null);

这足以防止SQL注入吗?或者我应该使用事先准备好的报表

使用prepared语句的建议来自PHP,在PHP中,一些旧API不允许使用SQL参数(
),除非使用prepared语句

但是参数和准备好的语句是正交的概念。为了防止注入(并避免字符串/blob格式问题),您只需要参数。(而
query()
提供了这一点。)

准备好的语句只有在需要多次执行时才有用

(碰巧,
query()
确实在内部使用了一个准备好的语句,但这是SQLite API的结果,您不必担心。)