que - Cómo agregar una columna booleana en Android SQlite
tipos de datos que acepta sqlite (5)
He creado una tabla para mi ContentProvider
usando la siguiente línea:
static final String CREATE_DB_TABLE =
" CREATE TABLE " + CONTACTS_TABLE_NAME +
" (_id INTEGER PRIMARY KEY AUTOINCREMENT, " +
" pid TEXT NOT NULL, " +
" name TEXT NOT NULL,"+
"number TEXT NOT NULL);";
Tiene 4 columnas. Ahora quiero agregar una columna con un valor booleano de verdadero / falso. ¿Cómo puedo agregar anexar / cambiar esta declaración si tengo que agregar una columna booleana llamada "estado" ?
Como lo mencionó MD,
SQLite no tiene una clase de almacenamiento booleana separada. En su lugar, los valores booleanos se almacenan como números enteros 0 (falso) y 1 (verdadero).
Utilice la siguiente instrucción ALTER -
ALTER TABLE CREATE_DB_TABLE ADD status boolean NOT NULL default 0;
Luego puede usar el Cursor para obtener el valor requerido y luego convertirlo en booleano real -
flag=cursor.getString(0).equals("1")
Puede utilizar esta bandera para mostrar en la pantalla de usuario.
Referencia: sqlite.org/datatype3.html
Podrías usar algo como esto:
Crea tu tabla:
static final String CREATE_DB_TABLE =
"CREATE TABLE " + CONTACTS_TABLE_NAME " +
" (_id INTEGER PRIMARY KEY AUTOINCREMENT," +
"..." + " flag INTEGER DEFAULT 0)";
recupera tu valor como:
Boolean flag = (cursor.getInt(cursor.getColumnIndex("flag")) == 1);
Sqlite no proporciona ninguna clase para almacenar valores booleanos.
Puedes usar 0
para false
y 1
para true
. Luego tendrá que convertir estos valores después de recuperarlos de su base de datos.
desafortunadamente, el sqlite de Android no es compatible con el tipo booleano y debes usar Integer en lugar de él
public enum Status{
TRUE,FALSE;
}
static final String CREATE_DB_TABLE =
" CREATE TABLE " + CONTACTS_TABLE_NAME +
" (_id INTEGER PRIMARY KEY AUTOINCREMENT, " +......
" booleanColumn INTEGER DEFAULT 0);";
// mientras inserta
pasar los valores de Status.TRUE.ordinal () a la base de datos y
// mientras se recupera
verificación cruzada con el valor ordinal para el estado