日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

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

發(fā)布時間:2025/6/15 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 查询数据库,处理NULL值问题 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

在做機房收費系統(tǒng)時,每當從數(shù)據(jù)庫中查找數(shù)據(jù)并顯示到窗體界面時,如果查詢的記錄中有字段值為NULL時,就會報錯:

?

比如:(例子可能不恰當,因為注冊時不允許不輸入學生姓名。但是就是那個意思)卡號1(學號為1)上機時,在上機界面要顯示上機信息:學號、姓名、性別、系別….. 。(上機時要聯(lián)結(jié)三個表:CardInfo、StudentInfo、OnOffLine。這里就不細說了)但是,在從StudentInfo表中查詢信息時,“學號”字段為NULL,此時就會發(fā)生以上錯誤。

?

以下是我的StudentInfo表:

?

?

如何解決??

首先,我們知道要想把表中的數(shù)據(jù)顯示到界面,就需要定義的函數(shù)返回一個實體或一個數(shù)據(jù)表或一個數(shù)據(jù)集。由于顯示上機涉及到不止一個表,所以我的是返回數(shù)據(jù)集ds。

?

每當查詢表,將查詢信息返回到數(shù)據(jù)集中,都要用到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?????????'設定執(zhí)行的sql語句??
  • ???????cmd.CommandType?=?cmdType??????????'執(zhí)行語句的類型??
  • ???????cmd.Parameters.AddRange(parameter)????'添加參數(shù)??
  • ??
  • ???????sqlAdapter?=?New?SqlDataAdapter(cmd)??
  • ??
  • ???????Try??
  • ???????????conn.Open()??
  • ???????????sqlAdapter.Fill(ds,?"NewTable")??????'把從數(shù)據(jù)源中選取的行添加到數(shù)據(jù)集中????????????
  • ???????????Return?ds?????????????????'返回數(shù)據(jù)集ds??
  • ??
  • ???????Catch?ex?As?Exception??
  • ???????????Return?Nothing??
  • ??
  • ???????Finally??
  • ???????????Call?CloseCmd(cmd)??
  • ???????End?Try??
  • ??
  • ???End?Function??

  • 要解決以上NULL值問題,ExecuteDataSet()方法是這樣寫的:

    注意與修改前代碼的區(qū)別:主要是加了一個For循環(huán),來判斷返回的數(shù)據(jù)集的表中的每一行的每個字段是否有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?????????'設定執(zhí)行的sql語句??
  • ??
  • ????????cmd.CommandType?=?cmdType??????????'執(zhí)行語句的類型??
  • ??
  • ????????cmd.Parameters.AddRange(parameter)????'添加參數(shù)??
  • ??
  • ???
  • ??
  • ????????sqlAdapter?=?New?SqlDataAdapter(cmd)??
  • ??
  • ???
  • ????????Try??
  • ??
  • ????????????conn.Open()??
  • ????????????sqlAdapter.Fill(ds,?"NewTable")??????'把從數(shù)據(jù)源中選取的行添加到數(shù)據(jù)集中??
  • ??
  • ???
  • ??
  • ???????????<span?style="BACKGROUND-COLOR:?#ff0000">?'將數(shù)據(jù)集中為NULL值的字段值轉(zhuǎn)換為空值??
  • ??
  • ????????????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???'判斷數(shù)據(jù)集中的每條記錄的每個字段是否為NULL,如果為NULL則,設置字段值為空值"?"??
  • ??
  • ?????????????????????????ds.Tables("NewTable").Rows(i)(j)?=?"?"??????'將字段為NULL的值設置為空值"?"??
  • ??
  • ???
  • ????????????????????End?If??
  • ??
  • ????????????????Next??
  • ??
  • ????????????Next??
  • </span>??
  • ???
  • ???????????Return?ds?????????????????'返回沒有NULL值的數(shù)據(jù)集ds??
  • ??
  • ?????????Catch?ex?As?Exception??
  • ??
  • ????????????Return?Nothing??
  • ??
  • ???
  • ??
  • ????????Finally??
  • ??
  • ????????????Call?CloseCmd(cmd)??
  • ??
  • ????????End?Try??
  • ??
  • ???
  • ??
  • ????End?Function??
  • ??
  • ???

  • ?

    當然,解決NULL值問題的方法還有很多,比如可以在設計數(shù)據(jù)庫表時,規(guī)定每個字段值不許為空:

    ?

    還可以用IsDBNull來判斷,等等。

    總結(jié)

    以上是生活随笔為你收集整理的查询数据库,处理NULL值问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。