Значения SQLite по умолчанию для логического столбца, не работают должным образом
У меня есть такой SQLite
Таблица со следующей сущностью:
[Table ("employee")]
public class Employees
{
[Column ("employee_id")]
[PrimaryKey]
public int EmployeeId { get; set; }
[Column ("username")]
public string UserName { get; set; }
[Column ("password")]
public string Password { get; set; }
[Column ("first_name")]
public string FirstName { get; set; }
[Column ("last_name")]
public string LastName { get; set; }
[Column ("is_wah_allowed")] //Newly added Column
public bool IsWAHAllowed { get; set; }
}
Когда приложение запускается, я создаю таблицу.
conn.CreateTable<Employees>();
Я хочу добавить новый логический столбец со значением по умолчанию, равным 0 - ложь в SQLite
поскольку он хранит bool как 0 или 1.
Я попробовал это следующими способами:
Случай 1:
[Column ("is_wah_allowed")] //Newly added Column
Вывод: это показывает нулевой в браузере БД для SQLite
Случай 2:
[Column ("is_wah_allowed"), Default (false)] //Newly added Column
Выходные данные: это вызывает исключение в conn.CreateTable(); - Не может конвертировать из bool в int.
Случай 3:
[Column ("is_wah_allowed"), Default (value : 0)] //Newly added Column
Вывод: это показывает ложные значения в DB Browser для SQLite вместо 0. Когда сервер возвращает мне данные, я сохраняю / обновляю их, а затем он показывает их как 0 или 1 в обновленных строках, потому что сервер обрабатывает это как целочисленные значения.
Я хочу знать:
Случай 1: почему он показывает нулевое значение вместо 0 по умолчанию?
Случай 2: почему он вызывает исключение?
Случай 3: почему он показывает False вместо 0?
Заранее спасибо!!
1 ответ
Здесь нет boolean
существует в SQLite. Скорее вы храните boolean
значение в базе данных как int в SQLite. Значения, которые вы можете использовать: 0 для false и 1 для true. Когда вы идете и выберите INT из базы данных. Согласно 0 и 1 вы можете исправить if
else
блок.
Редактировать 1
Тип данных Boolean SQLite не имеет отдельного класса хранения Boolean. Вместо этого логические значения хранятся как целые числа 0 (ложь) и 1 (истина).
Для получения дополнительной информации посетите этот