web-dev-qa-db-fra.com

Comment ajouter une colonne booléenne dans Android SQlite

J'ai créé une table pour ma ContentProvider en utilisant la ligne suivante:

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

Il a 4 colonnes. Maintenant, je veux ajouter une colonne avec une valeur booléenne de vrai/faux. Comment puis-je ajouter ajouter/changer cette déclaration si je dois ajouter un boolean column nommé "status" .

27
BST Kaal

Vous pouvez utiliser quelque chose comme ceci:

Créez votre table:

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

récupérer votre valeur en tant que:

Boolean flag = (cursor.getInt(cursor.getColumnIndex("flag")) == 1);
58
Fantômas

Comme mentionné par M D,

SQLite n'a pas de classe de stockage booléenne séparée. Au lieu, Les valeurs booléennes sont stockées sous forme de nombres entiers 0 (faux) et 1 (vrai).

Utilisez l'instruction ALTER suivante -

ALTER TABLE CREATE_DB_TABLE ADD status boolean NOT NULL default 0;

Ensuite, vous pouvez utiliser le curseur pour obtenir la valeur requise, puis convertir en booléen réel -

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

Vous pouvez utiliser cet indicateur pour afficher sur l'écran de l'utilisateur.

Référence: http://www.sqlite.org/datatype3.html

13
My God
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);";

// en insérant

passer les valeurs Status.TRUE.ordinal () à la base de données et

// en récupérant

vérifier par recoupement avec la valeur ordinale pour le statut

1
San

Sqlite ne fournit aucune classe pour stocker des valeurs booléennes. 

Vous pouvez utiliser 0 pour false et 1 pour true. Vous devrez ensuite convertir ces valeurs après les avoir extraites de votre base de données.

0
Pankaj Arora

malheureusement, Android sqlite ne prend pas en charge le type booléen et vous devez utiliser Integer à la place.

0
a.miadian