Я взял на себя работу над проектом C #, в котором использовалась база данных SQLite, созданная не менее 3 лет назад. Предыдущий разработчик использовал некоторый плагин для FireFox для управления БД.
Когда я вступил во владение, я установил DB Browser и открыл DB, чтобы добавить несколько новых полей. Когда я выбираю изменить таблицу, я вижу ряд полей типа
BOOL Когда я создаю новые поля, BOOL не вариант. Я читал, где SQLite не имеет родной BOOL, например, t-sql, и это нормально. Я могу легко сохранить значения bool как int 1 или 0.
1) Но почему DB Browser показывает мне BOOL как тип некоторых существующих полей?
2) И почему этот C # работает с этими полями BOOL?
rs - это набор записей в этой таблице SQLite, а EnableNFCTools - одно из полей, которое отображается как тип BOOL. Этот код правильно устанавливает переменную enableNFCTools из значения DB.
bool.TryParse(string.Format("{0}", rs["EnableNFCTools"]), out enableNFCTools);
Приведенные выше коды не работают с новыми полями INTEGER, которые я добавил, и теперь мне нужно использовать что-то подобное, чтобы правильно получить настройки из этих полей INTEGER.
if ((long)rs["BadgePrintingEnabled"] == 1)
badgePrintingEnabled = true;
else
badgePrintingEnabled = false;
Опять же, если в действительности нет типа BOOL, то почему DB Browser показывает BOOL для некоторых из существующих полей в этой базе данных, по крайней мере, трехлетней давности?
И почему C # bool работает с этими типами BOOL?