我需要根据二进制blob列的值查询ContentProvider:
mContext.getContentResolver().query(
contentUri, // Uri
null, // Projection
TableColumns.blobColumn + " = ?", // Selection
new String[] { blob_query }, // Selection Arguments
null); // Order
根据我对SQLite literal values的阅读,似乎可以使用字符串文字[0x01]
查询值为X'01'
的blob。
但是,我无法查询blobColumn
具有值new byte[] { (byte) 0x01 }
的记录
// Insert record
byte[] blobData = new byte[] { (byte) 0x01 };
ContentValues entry = new ContentValues();
entry.put(TableColumns.blobColumn, blobData);
Uri entryUri = getContext().getContentResolver().insert(contentUri, entry);
// Query record by blob (fails)
result = getContext().getContentResolver().query(contentUri,
null,
TableColumns.blobColumn + " = ?",
new String[] {
"x'01'"
// None of the above or below work
// "0x01"
//"X'01'"
//"01"
},
null);
result.getCount() // 0
// Query record by id (succeeds)
result = getContext().getContentResolver().query(contentUri,
null,
TableColumns.idColumn + " = ?",
new String[] {
entryUri.getLastPathSegment()
},
null);
result.getCount() // 1
答案 0 :(得分:0)
以下作品:
Cursor result = getContext().getContentResolver().query(contentUri,
null,
"quote(" + TableColumns.blobColumn + ") = ?",
new String[] { "X'01'" },
null);
如果它存在,我会高兴地接受更好的答案。