2011-12-07 149 views
4

如何检查SQLite数据库中列的值是否为空,如果它是Blob类型?如何检查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

而且,数据库不可能在该列中有任何数据;它必须为空。有任何想法吗?谢谢!

+0

命令行上的普通SQL查询返回该列/行的内容是什么? –

+0

您是否尝试过查询'length(x)'而不是'x'的补充?它将返回Null,如果x为空,并且不应该由任意八位字节序列混淆dB驱动程序和/或客户端缓冲区。 – collapsar

+0

@DaDaDom一个普通的查询返回NULL。 –

回答

-2

请看以下查询来获取值Y或N

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

如果斑点为null,则它返回n其他Y.

-2

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

例子:

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

我希望它可以帮助你。