2011-12-07 226 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 
} 

我希望它可以幫助你。