vb.net - 未为类型“DBNull”和类型“DBNull”定义运算符“=”
问题描述
在使用 SqlDataReader(即“阅读器”)时,在尝试检查值是否为 DBNull 时遇到以下错误。
没有为类型“DBNull”和类型“DBNull”定义运算符“=”。
使用以下代码时:
If reader("MyColumn") = DBNull.Value Then
'...
End If
我通过调用 IsDBNull() 绕过了该错误,我怀疑这是由于“Is”和“=”之间的差异造成的。
但是,我的问题是:为什么不能使用 '=' 运算符进行比较?
解决方案
在 SQL 中,null = null 的计算结果为 false。这可能是没有为这种类型定义相等运算符的原因。
您无法确定未知事物是否等于其他未知事物,从而使相等运算符无用。
用于DBNull.Value.Equals()
确定它是否为空。
推荐阅读
- bash - 在特殊字符中添加 [ ] 的 awk
- gis - 绘制+100k地理数据时如何避免渲染性能不佳
- javascript - 如何在屏幕上使 div 对齐以考虑滚动条的宽度?
- html - [CSS]视差效果和固定文本
- linux - 在文本文件文件中搜索数字并指定范围和长度 Grep
- jenkins-pipeline - 在向 RocketChat 发出构建通知时构建失败并显示“无协议:/api/v1/login”
- c++ - Visual Studio 2017 的 cppcheck 插件问题“对象引用未设置为对象的实例。”
- excel - VBA复制特定单元格并粘贴到相邻列
- javascript - Javascript - 从外部访问函数闭包中的变量
- google-cloud-platform - 使用 Google IAP 启用 CORS