webentwicklung-frage-antwort-db.com.de

So fügen Sie eine boolesche Spalte in Android SQlite hinzu

Ich habe eine Tabelle für meine ContentProvider in der folgenden Zeile erstellt:

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

Es hat 4 Spalten. Jetzt möchte ich eine Spalte mit dem booleschen Wert true/false hinzufügen. Wie kann ich diese Anweisung hinzufügen/ändern, wenn ich eine boolean -Spalte mit dem Namen "status" hinzufügen muss.

27
BST Kaal

Sie könnten so etwas verwenden:

Erstellen Sie Ihren Tisch:

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

holen Sie sich Ihren Wert als:

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

Wie von M D erwähnt,

SQLite hat keine separate boolesche Speicherklasse. Stattdessen, Boolesche Werte werden als Ganzzahlen 0 (falsch) und 1 (wahr) gespeichert.

Verwenden Sie die folgende ALTER-Anweisung -

ALTER TABLE CREATE_DB_TABLE ADD status boolean NOT NULL default 0;

Dann können Sie den Cursor verwenden, um den erforderlichen Wert zu erhalten, und dann in den tatsächlichen Booleschen Wert konvertieren.

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

Sie können dieses Flag verwenden, um auf dem Benutzerbildschirm anzuzeigen.

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

// während des Einfügens

Übergeben Sie die Werte von Status.TRUE.ordinal () an die Datenbank und

// beim Abrufen

gegenprüfung mit dem Ordinalwert für den Status

1
San

Sqlite bietet keine Klasse zum Speichern boolescher Werte. 

Sie können 0 für false und 1 für true verwenden. Sie müssen diese Werte dann konvertieren, nachdem Sie sie aus Ihrer Datenbank abgerufen haben.

0
Pankaj Arora

leider unterstützt Android sqlite keinen booleschen Typ und Sie sollten stattdessen Integer verwenden

0
a.miadian