zoukankan      html  css  js  c++  java
  • 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。
  • 相关阅读:
    桶排序
    基数排序
    计数排序
    归并排序
    快速排序
    优先级队列-堆实现
    堆排序
    红黑树
    【转】二叉树
    ubuntu 16.04 mysql 相关
  • 原文地址:https://www.cnblogs.com/jackkwok/p/10108302.html
Copyright © 2011-2022 走看看