VB6程序中NULL注意事项
VB6中从数据库中取出栏位值进行操作,若栏位值为Null,则必须小心处理,否则极易导致程序出错退出。
通常我们从recordset中取出栏位值采用Fields方法,加上栏位名称,如
rsMoney.Fields("SecondPlate")
以上Fields方法返回的是Variant类型,Variant类型允许为Null,但我们通常将栏位值当做string或int类型来使用,如赋值、比较,就会出错!
1,Null赋值操作
如以下代码:
1) Dim ss As String
2) Dim aa As Variant
3) ss = "/~2018-12-10 13:40:33,45.50,45.50"
4) aa = Null '不会出错
5) ss = IIf(IsNull(aa), "", aa) '不会出错
6) ss = aa '出错
7) ss = aa & "" '不会出错
ss为字符串类型,aa为Variant类型,
- Variant类型变量可以赋值为Null,所以第4行不会出错
- 第5行在将Null赋值给字符串变量前,先用isNull函数判断是否为Null,用IIF函数将Null转换为空字符串再赋值给ss,所以不会出错
- 第6行直接将Null赋值给字符串变量,所以出错
- 第7行在将Null赋值给字符串变量前,先与空字符串连接,右侧运算结果为空字符串,所以不会出错
2,Null比较操作
Dim ss As String
Dim aa As Variant
ss = ""
aa = Null '不会出错
If ss = aa Then
Form1.Text1.Text = "1!"
Else
If ss > aa Then
Form1.Text1.Text = "2!"
Else
If ss < aa Then
Form1.Text1.Text = "3!"
Else
Form1.Text1.Text = "4!"
End If
End If
End If
以上代码运行结果为4!
因为与Null进行比较,无论是大于还是小于还是等于,其结果全部为False。
3,数据库栏位值可能为Null时,代码操作注意事项
综上,建议如下:
- 在VB中取出记录栏位值在进行赋值前,应进行判断或转换。建议赋值前与空字符串进行连接操作,比较简明。即:
Dim ss As String
Ss = rsMoney.Fields("SecondPlate") & ""
- 记录栏位值可能为Null时,不能等同于空字符串进行比较操作。可能为Null的栏位值,在进行比较操作前应先进行明确的判断或转换,以免程序产生bug。
最新文章
- 两种open()函数
- paper 6:支持向量机系列三:Kernel —— 介绍核方法,并由此将支持向量机推广到非线性的情况。
- D触发器
- nginx根据域名做http,https分发
- 浅析MySQL中exists与in的使用 (写的非常好)
- c#使用spy进行模拟操作
- css text-indent:999em
- PDO(PHP Data Object)数据访问抽象层
- Hyperledger Fabric 1.0 从零开始(八)——Fabric多节点集群生产部署
- .Net利用Newtonsoft进行解析Json的快捷方法
- C#语法相比其它语言比较独特的地方
- 小tips:JS之for in、Object.keys()和Object.getOwnPropertyNames()的区别
- day4——无重复字符的最长子串
- centos7+cobbler+kickstart
- 洛谷P4307 球队收益
- JS创建对象之动态原型模式
- JQuery miniui使用小记
- xhprof 安装详解
- long数值 转换为时间
- C++雾中风景番外篇2:Gtest 与 Gmock,聊聊C++的单元测试