Подтвердить что ты не робот

Как добавить булевскую колонку в Android SQlite

Я создал таблицу для моего ContentProvider, используя следующую строку:

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

Он имеет 4 столбца. Теперь я хочу добавить столбец с логическим значением true/false. Как я могу добавить append/change this statement, если мне нужно добавить столбец boolean с именем "статус.

4b9b3361

Ответ 1

Вы можете использовать что-то вроде этого:

Создайте таблицу:

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

получить ваше значение как:

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

Ответ 2

Как упоминалось M D,

SQLite не имеет отдельного булевского класса хранения. Вместо, Булевы значения сохраняются как целые числа 0 (ложь) и 1 (истина).

Используйте следующий оператор ALTER -

ALTER TABLE CREATE_DB_TABLE ADD status boolean NOT NULL default 0;

Затем вы можете использовать Cursor для получения требуемого значения, а затем преобразовать в фактический логический -

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

Вы можете использовать этот флаг для отображения на экране пользователя.

Ссылка: http://www.sqlite.org/datatype3.html

Ответ 3

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

//при вставке

передать значения Status.TRUE.ordinal() в базу данных и

//при извлечении

перекрестная проверка с порядковым значением состояния

Ответ 4

Sqlite не предоставляет никакого класса для хранения логических значений.

Вы можете использовать 0 для false и 1 для true. Затем вам придется преобразовать эти значения после их извлечения из вашей базы данных.

Ответ 5

К сожалению, android sqlite не поддерживает тип Boolean, и вместо него следует использовать Integer