【发布时间】:2012-01-15 11:54:41
【问题描述】:
如果是 Blob 类型,如何检查 SQLite 数据库中列的值是否为空?
我正在像这样获取光标:
public Cursor fetchArticle(int i) throws SQLException {
Cursor mCursor = mDatabase.query(true, "api_content",
new String[] { "_id", "ArticleName", "ArticleText","ImageLink", "Image" },
KEY_ID + "=" + i, null, null, null, null, null);
if (mCursor != null) {
mCursor.moveToFirst();
}
return mCursor;
}
如何检查索引 4 的 Image 列的值是否为空?我尝试了以下方法:
- 使用 isNull() 方法,该方法总是返回 false,而实际上该值肯定应该为 null
- 使用
articleCursor.getBlob(4) == null,其中articleCursor是一个有效的光标(返回false)
更复杂的是,当我打印出articleCursor.getBlob(4)[0] 时,它会返回诸如78 或91 之类的值,这与我认为的null 不同。
同样,数据库不可能在该列中有任何数据;它必须为空。有任何想法吗?谢谢!
【问题讨论】:
-
命令行上的普通 SQL 查询会为该列/行返回什么?
-
您是否尝试过查询 'length(x)' 而不是或补充 'x'?如果 x 为 Null 且任何 dB 驱动程序和/或客户端缓冲区不应被任意八位字节序列混淆,它将返回 Null。
-
@DaDaDom 一个普通查询返回 NULL。
-
@collapsar,当你说'x'时,你指的是articleCursor.getBlob(4)返回的字节数组吗?
-
@alejandro: 不,实际上我指的是 sql 语句,或者游标构造函数的参数。而不是选择结果集列,您应该能够在这样的列上指定一个 sql 表达式,即您的示例中的“长度(图像)” - 您最好查阅手册或类 api 以获得正确的语法。