c# - System.Data.Sqlite dll不同版本对同一个数据库返回不同的BOOL值
问题描述
我有一个读取 SQL 语句结果的“IDataReader”。
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'
编辑:仔细看后发现配置表结构的时候写一个TYPE时没有做检查。例如,您可以键入“NOTATYPE”并使用 写入更改DB Browser for SQLite
,它将被保存。
因此,检查 TYPE AFFINITY 的方式可能会发生一些奇怪的事情,并导致“真/假”结果。现在我会坚持使用允许的 SQL 类型,但我仍然会保留票证,以防有人更好地理解这个问题。
解决方案
推荐阅读
- spring - spring boot 1.5.17 RELEASE un解决依赖关系
- ms-office - 从 Windows 计划任务创建 Word OLE 客户端会导致 ntdll 应用程序错误
- typescript - 如何获取泛型的名称并使用它在 TypeScript 中构造接口的属性?
- android - 重新启动应用程序后 Flutter Secure Storage 不持久
- c++ - 为什么字符串打印垃圾值,如果我们给它大小?
- javascript - TensorflowJS/mobilenet RAM 使用量不断增加,内存泄漏?
- reactjs - 是否有与 React PropTypes.instanceOf() 对应的 TypeScript?
- powershell - Powershell 错误处理在 Invoke-command 块中不起作用
- javascript - 而不是上传单个图像如何上传多个图像
- html - 即使键盘在移动网络上启动,如何修复标题?