sqlite 如何检查BLOB是否为空

cotxawn7  于 2022-11-15  发布在  SQLite
关注(0)|答案(2)|浏览(323)

如果SQLite数据库中的列属于Blob类型,如何检查该列的值是否为空?
我正在获取一个游标,如下所示:

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;
}

如何检查Image列(索引4)的值是否为空?我尝试了以下几种方法:

  • 使用isNull()方法,该方法总是返回FALSE,而实际上该值肯定应该为空
  • 使用articleCursor.getBlob(4) == null,其中articleCursor是有效游标(返回FALSE)

更复杂的是,当我打印出articleCursor.getBlob(4)[0]时,它返回诸如7891之类的值,它们与我认为的null不同。
同样,数据库不可能在该列中包含任何数据;它必须为空。有什么主意吗?谢谢!

irlmq6kh

irlmq6kh1#

方法getBlob()总是有一个值。如果此列的值为空或NULL,则使用方法长度时,结果为1。
示例:

byte[] image = cursor.getBlob(cursor.getColumnIndex("image"));
if(image.length == 1) {
   //column data is empty
} else{
   //column has data
}

我希望它能帮助你。

jfewjypa

jfewjypa2#

请查找以下查询以获得值Y或N

select id, 
 case
      when myblob is not null then 'Y'
      else 'N'
 end,
 myblob

如果BLOB为空,则返回N Else Y。

相关问题