使用 byte[] WHERE 子句的 SQLite 查询
从 Android SQLite 数据库的角度来看 - 我有一个表,其中有一个 BLOB 类型的字段,然后我想根据这个 BLOB 字段查询该表的内容。
我可以使用 ContentValues
插入我的 BLOB 字段并使用以下方法检索它:
cursor.getBlob(0)// index
我只是不知道如何根据此 BLOB 字段查询此表内容,并且没有发现任何有关此问题的信息。
From an Android SQLite database point of view - I have a table which has a field with BLOB type and then I want to query this table contents based on this BLOB field.
I can insert my BLOB field using ContentValues
and retrieve it using:
cursor.getBlob(0)// index
I just can't figure out how to query this table contents based on this BLOB field and have found nothing about this problem.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您无法查询 blob 的(文本?二进制?其他?)内容。
如果您查看,您会看到内容是十六进制的:
示例:X'53514C697465'。
建议:
创建一个新的文本列,例如“blob_index”。您可以搜索“索引”列,然后获取 blob。
或者,只需将数据存储为“文本”。
You can't query the (textual? binary? other?) contents of a blob.
If you look, you'll see the contents is in hex:
EXAMPLE: X'53514C697465'.
Suggestions:
Create a new text column, e.g. "blob_index". You can search on the "index" column, then fetch the blob.
Alternatively, just store the data as "text".
我发现你可以查询 blob。需要在查询中使用 hex() 函数。
例如,我在数据库行中使用 UUID 作为唯一键,我可以在本地生成该键,并且仍然确保服务器上的唯一性。
插入数据时,执行以下操作:
给定以下形式的查询 URI:
查询变为:
在
UuidFactory
(其中还包含生成新 UUID 的代码)中,定义了以下静态函数:为了完整性:
I found that you can query on a blob. One needs to use the hex() function on the query.
For example I'm using UUIDs in my database rows as a unique key that I can generate locally and still be sure of uniqueness on the server.
When inserting data the following works:
Given a query URI in the form:
the query becomes:
In
UuidFactory
(which also contains the code to generate new UUIDs) the follow static functions are defined thus:And for completeness: