2011-12-07 19 views
4

SQLiteデータベースの列の値がBlob型である場合、NULL値であるかどうかをどのようにチェックするのですか?BLOBがヌルかどうかを確認する方法

は、私はそうのようなカーソルを取得しています:画像列の値は、インデックス4は、nullの場合

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

はどうすれば確認できますか?私は、次のことを試してみました:

  • 実際に値が最も確かarticleCursorが有効なカーソル(falseを返す)であるarticleCursor.getBlob(4) == nullを使用
  • nullになる必要があるときは常にfalseを返すisNull()方法を使用して

articleCursor.getBlob(4)[0]を印刷すると、問題がさらに複雑になるため、と似ていない78または91などの値が返されます。

また、データベースにはその列にデータが含まれている必要があります。 nullにする必要があります。何か案は?ありがとう!

+0

コマンドラインでプレーンSQLクエリがその列/行を返すのは何ですか? –

+0

'x'の代わりに、または 'x'を補完する 'length(x)'のクエリを試しましたか? xがヌルで、任意のオクテットシーケンスでdBドライバやクライアントバッファを混同しない場合は、Nullを返します。 – collapsar

+0

@DaDaDomプレーンクエリはNULLを返します。 –

答えて

-2

値を取得するには、クエリの下に見つけてくださいYまたはN

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

ブロブがnullの場合、それは

-2

法のgetBlob(N他Y.を返す)常に値を持っています。私はそれはあなたを助けることを願って

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

:この列の値が空またはnullの場合、メソッドの長さを使用する場合、結果は1

例です。