2011-12-07 3 views
4

Comment vérifier si la valeur d'une colonne dans une base de données SQLite est nulle, si elle est de type Blob?Comment vérifier si BLOB est nul

Je suis un curseur comme aller chercher si:

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

Comment puis-je vérifier si la valeur de la colonne d'image, index 4, est nul? Je l'ai essayé ce qui suit:

  • En utilisant la méthode isNull(), qui retourne toujours faux quand, en fait, la valeur devrait certainement être nulle
  • En utilisant articleCursor.getBlob(4) == null, où articleCursor est un curseur valide (elle retourne false)

Pour compliquer davantage les choses, quand j'imprime articleCursor.getBlob(4)[0], il renvoie des valeurs telles que 78 ou 91, qui ne ressemblent à rien que je considère null.

Et encore, il est impossible que la base de données devrait avoir des données dans cette colonne; ça doit être nul. Des idées? Merci!

+0

Que retourne une requête SQL simple sur la ligne de commande pour cette colonne/ligne? –

+0

Avez-vous essayé Querying pour 'length (x)' au lieu de ou en complément de 'x'? Il retournera Null ssi x est nul et aucun pilote dB et/ou client Buffer ne devrait être confondu par des séquences d'octets arbitraires. – collapsar

+0

@DaDaDom une requête simple renvoie NULL. –

Répondre

-2

S'il vous plaît trouverez ci-dessous requête pour obtenir la valeur Y ou N

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

Si blob est nul, alors il retourne N autre Y.

-2

Méthode getBlob() a toujours une valeur. Si la valeur de cette colonne est vide ou nulle, lorsque vous utilisez la longueur de la méthode, le résultat est 1.

Exemple:

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

J'espère que cela peut vous aider.

Questions connexes