Различные версии System.Data.Sqlite возвращают разные значения BOOL для одной и той же базы данных. - PullRequest
0 голосов
/ 08 февраля 2019

У меня есть IDataReader, который читает результат оператора SQL.

using (var reader = command.ExecuteReader())
            {
                while (reader.Read())
                {
                    var boolColumnString = reader[13](or even reader['boolcolumnname']).ToString();
                }
            }

Этот одинаковый фрагмент кода используется в обеих версиях System.Data.SQLite.

База данных имеет тип .mdc, а 13-й тип столбца - BOOL со значением.установить ничего для всех записей.Пусто

Однако при использовании вышеуказанного считывателя с:

  • System.Data.SQLite версии 1.0.66 значение boolColumnString равно «ложь», как и должно (потому что это имеет смысл)
  • System.Data.SQLite версии 1.0.109.2 значение boolColumnString равно 'true'

Редактировать: После более внимательного изучения я обнаружил, что проверка не выполняется, когдаВы пишете ТИП при настройке структуры таблицы.Например, вы можете ввести «NOTATYPE» и записать изменения, используя DB Browser for SQLite, и они будут сохранены.

В результате этого может произойти что-то странное с тем, как проверяется ТИФ АФФИНИТИ, и результатом будет «истина / ложь».Пока я буду придерживаться разрешенных типов для SQL, но я все равно оставлю заявку открытой, если кто-то лучше поймет проблему.

...