生活随笔
收集整理的这篇文章主要介绍了
查询数据库,处理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 String , ByVal 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 cmd.CommandType = cmdType cmd.Parameters.AddRange(parameter) sqlAdapter = New SqlDataAdapter(cmd) Try conn.Open() sqlAdapter.Fill(ds, "NewTable" ) Return 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 String , ByVal 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 cmd.CommandType = cmdType cmd.Parameters.AddRange(parameter) sqlAdapter = New SqlDataAdapter(cmd) Try conn.Open() sqlAdapter.Fill(ds, "NewTable" ) <span style="BACKGROUND-COLOR: #ff0000" > 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 ds.Tables("NewTable" ).Rows(i)(j) = " " End If Next Next </span> Return ds Catch ex As Exception Return Nothing Finally Call CloseCmd(cmd) End Try End Function
当然,解决NULL值问题的方法还有很多,比如可以在设计数据库表时,规定每个字段值不许为空:
还可以用IsDBNull来判断,等等。
总结
以上是生活随笔 为你收集整理的查询数据库,处理NULL值问题 的全部内容,希望文章能够帮你解决所遇到的问题。
如果觉得生活随笔 网站内容还不错,欢迎将生活随笔 推荐给好友。