Solución:
No hay un tipo de datos booleano nativo para SQLite. Según el documento de tipos de datos:
SQLite no tiene una clase de almacenamiento booleana separada. En cambio, los valores booleanos se almacenan como enteros 0 (falso) y 1 (verdadero).
En SQLite, lo mejor que puede hacer es usar los enteros 0 y 1 para representar falso y verdadero. Podría declarar el tipo de columna así:
CREATE TABLE foo(mycolumn BOOLEAN NOT NULL CHECK (mycolumn IN (0,1)));
Omitir el NOT NULL
si quieres permitir NULL
además de 0 y 1.
El uso del nombre del tipo BOOLEAN
aquí es para legibilidad, para SQLite es solo un tipo con afinidad NUMÉRICA.
Tenga en cuenta que las restricciones CHECK se admiten desde SQLite 3.3.0 (2006).
Aquí hay algunos INSERTs de ejemplo que funcionarán: (observe cómo las cadenas y los números de punto flotante se analizan como números enteros)
sqlite> INSERT INTO foo VALUES(0);
sqlite> INSERT INTO foo VALUES(1);
sqlite> INSERT INTO foo VALUES(0.0);
sqlite> INSERT INTO foo VALUES(1.0);
sqlite> INSERT INTO foo VALUES("0.0");
sqlite> INSERT INTO foo VALUES("1.0");
sqlite> select mycolumn, typeof(mycolumn) from foo;
0|integer
1|integer
0|integer
1|integer
0|integer
1|integer
y algunos que fallarán:
sqlite> INSERT INTO foo VALUES("-1");
Error: constraint failed
sqlite> INSERT INTO foo VALUES(0.24);
Error: constraint failed
sqlite> INSERT INTO foo VALUES(100);
Error: constraint failed
sqlite> INSERT INTO foo VALUES(NULL);
Error: foo.mycolumn may not be NULL
sqlite> INSERT INTO foo VALUES("true");
Error: constraint failed
sqlite> INSERT INTO foo VALUES("false");
Error: constraint failed
Tipo de datos booleano SQLite:
SQLite no tiene una clase de almacenamiento booleana separada. En cambio, los valores booleanos se almacenan como enteros 0 (falso) y 1 (verdadero).
Puede convertir booleano a int de esta manera:
int flag = (boolValue)? 1 : 0;
Puede convertir int de nuevo a booleano de la siguiente manera:
// Select COLUMN_NAME values from db.
// This will be integer value, you can convert this int value back to Boolean as follows
Boolean flag2 = (intValue == 1)? true : false;
Si desea explorar sqlite, aquí hay un tutorial.
He dado una respuesta aquí. Está funcionando para ellos.