Как добавить булевскую колонку в 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 с именем "статус.
Ответы
Ответ 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