Come aggiungere una colonna booleana in Android SQlite

Ho creato una tabella per il mio ContentProvider usando la seguente riga:

 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);"; 

Ha 4 colonne. Ora voglio aggiungere una colonna con un valore booleano di vero / falso. Come posso aggiungere append / cambiare questa dichiarazione se devo aggiungere una colonna booleana denominata “status” .

Potresti usare qualcosa come questo:

Crea la tua tabella:

 static final String CREATE_DB_TABLE = "CREATE TABLE " + CONTACTS_TABLE_NAME " + " (_id INTEGER PRIMARY KEY AUTOINCREMENT," + "..." + " flag INTEGER DEFAULT 0)"; 

recupera il tuo valore come:

 Boolean flag = (cursor.getInt(cursor.getColumnIndex("flag")) == 1); 

Come menzionato da MD,

SQLite non ha una class di archiviazione booleana separata. Invece, i valori booleani vengono memorizzati come numeri interi 0 (falso) e 1 (vero).

Utilizzare la seguente istruzione ALTER:

 ALTER TABLE CREATE_DB_TABLE ADD status boolean NOT NULL default 0; 

Quindi puoi usare il Cursore per ottenere il valore richiesto e poi convertirlo in effettivo booleano –

 flag=cursor.getString(0).equals("1") 

È ansible utilizzare questo flag per visualizzare sullo schermo utente.

Riferimento: http://www.sqlite.org/datatype3.html

 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);"; 

// durante l’inserimento

passare i valori Status.TRUE.ordinal () al database e

// durante il recupero

verifica incrociata con il valore ordinale per lo stato

Sqlite non fornisce alcuna class per memorizzare valori booleani.

Puoi usare 0 per false e 1 per true . Dovrai quindi convertire questi valori dopo averli recuperati dal tuo database.

sfortunatamente sqlite Android non supporta il tipo booleano e dovresti usare Integer invece di esso