如何检查BLOB是否为空

时间:2011-12-07 23:46:20

标签: android sql sqlite

如何检查SQLite数据库中列的值是否为null,如果它是Blob类型?

我像这样获取一个Cursor:

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,而实际上该值肯定应为null
  • 使用articleCursor.getBlob(4) == null,其中articleCursor是有效的Cursor(返回false)

为了使问题更加复杂,当我打印articleCursor.getBlob(4)[0]时,它会返回7891等值,这些值与我认为null的任何内容都不相似。

同样,数据库不可能在该列中包含任何数据;它必须为null。有任何想法吗?谢谢!

2 个答案:

答案 0 :(得分:0)

方法getBlob()始终具有值。如果此列的值为空或为null,则在使用方法长度时,结果为1.

示例:

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

我希望它可以帮到你。

答案 1 :(得分:-2)

请在下面查询中获取值Y或N

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

如果blob为null,则返回N else Y。