Значения 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 вы можете исправить ifelse блок.

Редактировать 1

Тип данных Boolean SQLite не имеет отдельного класса хранения Boolean. Вместо этого логические значения хранятся как целые числа 0 (ложь) и 1 (истина).

Типы данных SQLite

Для получения дополнительной информации посетите этот

Другие вопросы по тегам