【发布时间】:2014-01-21 14:26:24
【问题描述】:
有没有一种直接的方法来查询带有非String 类型的选择参数的SQLiteDatabase?
特别是:如果 arg 是 byte[] 类型?
我能找到的最接近的东西是SQLiteDatabase.compileStatement(),它返回一个SQLiteStatement,你可以调用bindBlob等。不幸的是,SQLiteStatement 不适合查询,因为它不返回游标。
SQLiteCursor 看起来很有希望,但我不知道如何使用它。
【问题讨论】:
-
基于 blob 的查询听起来非常低效。您确定这是编写查询的唯一方法吗?
-
是的。它不一定是大块。
-
有没有办法甚至 express 在 WHERE 子句中包含 BLOB 的查询?暂时忘掉Android吧:你会如何在普通的SQL中做到这一点?
-
好问题。一个字节 literal 可以以某种方式在 sql 语句中表达吗?虽然我现在无法验证,但似乎 SQLite C api 确实允许通过准备好的语句进行查询,您可以通过 sqlite3_bind_blob 将 blob 绑定到这些语句。 link
-
如果你想使用
bindBlob()方法,你必须实现你自己的SQLiteCursorDriver。