Cómo comprobar si BLOB es nulo
¿Cómo se comprueba si el valor de una columna en una base de datos SQLite es nulo, si es del tipo Blob?
Estoy buscando un Cursor así:
- RealmObject AND Parcelable
- No se ha podido abrir la base de datos de georreferencias de vista web de Android
- ¿Cómo puedo recuperar datos de la base de datos con el cursor? (Android, SQLite)
- Net.sqlcipher.database.SQLiteException: no es un error:
- Android: la ejecución de SQLiteStatement (inserción múltiple) falla con API Nivel 14
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; }
¿Cómo puedo comprobar si el valor de la columna de la imagen, índice 4, es nulo? He intentado lo siguiente:
- Usando el método isNull () , que siempre devuelve false cuando de hecho el valor debe ser ciertamente nulo
- Usando
articleCursor.getBlob(4) == null
, dondearticleCursor
es un Cursor válido (devuelve false)
Para complicar aún más las cosas, al imprimir el articleCursor.getBlob(4)[0]
, devuelve valores como 78
o 91
, que no se parecen a nada que considero null
.
Y de nuevo, es imposible que la base de datos tenga datos en esa columna; debe ser nulo. ¿Algunas ideas? ¡Gracias!
- ¿Cómo obtener el ID guardado en SugarORM?
- ¿Cómo obtener eventos en las últimas 24 horas con SQLite?
- DB de SQLite accedido desde múltiples subprocesos
- INSERT de SQLite de SQL
- Obtener nueva fila agregada en la tabla SQLite
- Cómo implementar la función recursiva de sqlite3 en dispositivos Android
- Intent.ACTION_PICK devuelve el cursor vacío para algunos contactos
- Cómo utilizar correctamente claves foráneas en Android, utilizando SQLite y OrmLite
A continuación encontrará la consulta para obtener el valor Y o N
select id, case when myblob is not null then 'Y' else 'N' end, myblob
Si blob es nulo, entonces devuelve N else Y.
Método getBlob () siempre tiene un valor. Si el valor de esta columna es vacío o nulo, al usar la longitud del método, el resultado es 1.
Ejemplo:
byte[] image = cursor.getBlob(cursor.getColumnIndex("image")); if(imgage.length == 1) { //data is empty } else{ // has data }
Espero que pueda ayudarte.
- HttpUrlConnection se comporta diferente en Android 2.3 Gingerbread
- android overlayitem como flecha en dirección en lugar de marcador