fru*_*rge 5 sql sqlite android sql-injection
我一直在寻找Android中用于参数化查询的接口/类,这有点乱.
有人能说清楚什么是最好的(也是最安全的):
任何人都可以解释为什么这么多存在,它们之间的区别是什么是为查询绑定参数的最佳方法?
我一直在寻找Android中用于参数化查询的接口/类,这有点乱.
并不是的.
有人能说清楚什么是最好的(也是最安全的):
不,因为您没有定义您认为"最佳"的标准.
使用SQLiteDatabase.query()使用SQLiteDatabase.rawQuery()
就个人而言,我使用它rawQuery(),因为我发现它是最具可读性的.恕我直言,query()更适用于您尝试从各个部分(例如,表名,列列表)构造SELECT语句的情况,因为可能其中一些是可变的(例如,针对不同用户的不同表).在一天结束时,他们都做同样的事情.在封面下query()使用SQLiteQueryBuilder(见下文).
使用compileStatement()使用SQLiteStatement
这些都是一回事.SQLiteStatement是Java所谓的"类".compileStatement()是Java所指的"方法".该compileStatement()方法返回SQLiteStatement该类的实例.
SQLiteStatement 通常对查询没用,因为它不能返回完整的结果集,除了单列/单行响应.
使用SQLiteQueryBuilder
这是从单个部分构造查询的另一种方法.在多方可以决定查询中的内容(例如a ContentProvider和消费者)的情况下,它非常有用ContentProvider.除此之外,最后,它执行一个rawQuery().因此,使用SQLiteQueryBuilder或rawQuery()直接使用的结果没有显着差异.
使用managedQuery()
这已被弃用,并且SQLiteDatabase无论如何都不相关.
使用ContentValues
这与针对a的查询无关SQLiteDatabase.
谁能解释为什么这么多存在
有些角色扮演不同的角色,在许多情况下与a的查询无关SQLiteDatabase.
关于你的名单(按以上三种有效的选择rawQuery(),query()和SQLiteQueryBuilder),他们都做同样的事情:query()用途SQLiteQueryBuilder和SQLiteQueryBuilder使用rawQuery().唯一的区别在于如何SELECT构造SQL 语句.
| 归档时间: |
|
| 查看次数: |
1650 次 |
| 最近记录: |