我必须将数据从用 Delphi/BDE (DBase IV) 编写的旧应用程序移动到使用 VisualStudio 2008/SQLServer 的新应用程序。我对VS相当陌生。要从 Visual Studio 连接到 dbase 表,我使用 OLEDB JET 4.0,但在针对布尔值查询我的表时遇到了麻烦。
假设我的表包含一个整数和一个布尔字段(或逻辑字段?)
1 true
2 NULL
3 false
SELECT * from mytable
将显示在visual studio的底部网格中
1 true
2 false
3 false
NULL 似乎默认为 false(BDE 过去也这样做),这对我来说很好。我认为布尔字段的 NULL 值无论如何都没有意义。但是之后
SELECT * from mytable where field2 IS NOT NULL
显示相同的结果
SELECT * from mytable where field2 IS NULL
显示一个空的结果集
和最好的:
SELECT * from mytable where field2 = true
将显示在底部网格中
1 true
2 false
所以问题是:布尔类型的 NULL 值是否默认为 true ?(并且网格只是通过将它们显示为“false”而行为不端?)还是默认为 false ?在这种情况下,我的 oledb dll 可能已经过时或有问题(为什么不)?