欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

查询数据库,处理NULL值问题

发布时间:2025/6/15 51 豆豆
生活随笔 收集整理的这篇文章主要介绍了 查询数据库,处理NULL值问题 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

在做机房收费系统时,每当从数据库中查找数据并显示到窗体界面时,如果查询的记录中有字段值为NULL时,就会报错:

 

比如:(例子可能不恰当,因为注册时不允许不输入学生姓名。但是就是那个意思)卡号1(学号为1)上机时,在上机界面要显示上机信息:学号、姓名、性别、系别….. 。(上机时要联结三个表:CardInfo、StudentInfo、OnOffLine。这里就不细说了)但是,在从StudentInfo表中查询信息时,“学号”字段为NULL,此时就会发生以上错误。

 

以下是我的StudentInfo表:

 

 

如何解决??

首先,我们知道要想把表中的数据显示到界面,就需要定义的函数返回一个实体或一个数据表或一个数据集。由于显示上机涉及到不止一个表,所以我的是返回数据集ds。

 

每当查询表,将查询信息返回到数据集中,都要用到SqlHelper中的一个方法:ExecuteDataSet(ByVal cmdText As String, ByVal cmdType As CommandType, ByVal parameter As SqlParameter()) As DataSet或重载方法 ExeCuteDataSet(ByVal cmdText As String, ByVal cmdType As CommandType)

 

在问题没有解决之前我的ExecuteDataSet()方法是这样写的(以第一个重载方法为例):

   

[vb] view plaincopy
  • Public Function ExecuteDataSet(ByVal cmdText As StringByVal cmdType As CommandType, ByVal parameter As SqlParameter()) As DataSet  
  •        Dim sqlAdapter As SqlDataAdapter  
  •        Dim ds As DataSet = New DataSet()  
  •   
  •   
  •        cmd.Connection = conn  
  •        cmd.CommandText = cmdText         '设定执行的sql语句  
  •        cmd.CommandType = cmdType          '执行语句的类型  
  •        cmd.Parameters.AddRange(parameter)    '添加参数  
  •   
  •        sqlAdapter = New SqlDataAdapter(cmd)  
  •   
  •        Try  
  •            conn.Open()  
  •            sqlAdapter.Fill(ds, "NewTable")      '把从数据源中选取的行添加到数据集中            
  •            Return ds                 '返回数据集ds  
  •   
  •        Catch ex As Exception  
  •            Return Nothing  
  •   
  •        Finally  
  •            Call CloseCmd(cmd)  
  •        End Try  
  •   
  •    End Function  

  • 要解决以上NULL值问题,ExecuteDataSet()方法是这样写的:

    注意与修改前代码的区别:主要是加了一个For循环,来判断返回的数据集的表中的每一行的每个字段是否有NULL值,如果有,则把该字段值改为空值" ")

     

    [vb] view plaincopy
  • Public Function ExecuteDataSet(ByVal cmdText As StringByVal cmdType As CommandType, ByVal parameter As SqlParameter()) As DataSet  
  •   
  •         Dim sqlAdapter As SqlDataAdapter  
  •   
  •         Dim ds As DataSet = New DataSet()  
  •   
  •         cmd.Connection = conn  
  •   
  •         cmd.CommandText = cmdText         '设定执行的sql语句  
  •   
  •         cmd.CommandType = cmdType          '执行语句的类型  
  •   
  •         cmd.Parameters.AddRange(parameter)    '添加参数  
  •   
  •    
  •   
  •         sqlAdapter = New SqlDataAdapter(cmd)  
  •   
  •    
  •         Try  
  •   
  •             conn.Open()  
  •             sqlAdapter.Fill(ds, "NewTable")      '把从数据源中选取的行添加到数据集中  
  •   
  •    
  •   
  •            <span style="BACKGROUND-COLOR: #ff0000"'将数据集中为NULL值的字段值转换为空值  
  •   
  •             For i = 0 To ds.Tables("NewTable").Rows.Count - 1  
  •   
  •                 For j = 0 To ds.Tables("NewTable").Columns.Count - 1  
  •   
  •                     If IsDBNull(ds.Tables("NewTable").Rows(i)(j)) Then   '判断数据集中的每条记录的每个字段是否为NULL,如果为NULL则,设置字段值为空值" "  
  •   
  •                          ds.Tables("NewTable").Rows(i)(j) = " "      '将字段为NULL的值设置为空值" "  
  •   
  •    
  •                     End If  
  •   
  •                 Next  
  •   
  •             Next  
  • </span>  
  •    
  •            Return ds                 '返回没有NULL值的数据集ds  
  •   
  •          Catch ex As Exception  
  •   
  •             Return Nothing  
  •   
  •    
  •   
  •         Finally  
  •   
  •             Call CloseCmd(cmd)  
  •   
  •         End Try  
  •   
  •    
  •   
  •     End Function  
  •   
  •    

  •  

    当然,解决NULL值问题的方法还有很多,比如可以在设计数据库表时,规定每个字段值不许为空:

     

    还可以用IsDBNull来判断,等等。

    总结

    以上是生活随笔为你收集整理的查询数据库,处理NULL值问题的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。