標(biāo)題: 巧用IsDbNull函數(shù)及object類(lèi)型(vb.net開(kāi)發(fā)) [打印本頁(yè)] 作者: 重新來(lái)過(guò) 時(shí)間: 2006-4-18 12:42 標(biāo)題: 巧用IsDbNull函數(shù)及object類(lèi)型(vb.net開(kāi)發(fā)) 在用vb開(kāi)發(fā)平臺(tái)的,我們時(shí)常會(huì)遇見(jiàn)這樣一個(gè)問(wèn)題
strName = cmbUser.SelectedItem.Value
'//
cmbUser.SelectedItem.Value = strName
上面兩個(gè)語(yǔ)句看是正常,可是有時(shí)我們?cè)谂軇?dòng)程序是“無(wú)緣無(wú)故” 在這里報(bào)錯(cuò)。!
什么原因??因?yàn)関b中有種DbNull數(shù)據(jù)類(lèi)型,在幫助文檔里面這種函數(shù)的解釋不夠清晰
很多人無(wú)法立即,到這里就束手無(wú)策,咋辦??
簡(jiǎn)單 可以寫(xiě)個(gè)函數(shù)
private function DbNullTo(byval strSource as string,byval repl as string ) as string
if IsDbNull(strSource) = true then
return repl
else
return strSource
end if
end sub
這是我們可以保證程序中不會(huì)出現(xiàn)有DbNuLL 類(lèi)型時(shí)會(huì)出錯(cuò)(上面的情況只處理了字符型)
我們可以中 重載的方式來(lái)寫(xiě)上面的函數(shù) 這樣可以處理其他的情況
但是 這樣的情況下 代碼會(huì)增加
怎么辦??
我們利用vb里面的 object 類(lèi)型來(lái)試試
private function DbNullTo(byval datSource as object,byval datRepl as object ) as object
if IsDbNull(datSource) = true then
select case datRepl .GetType.Name
case "Int32" ' Integer
return CInt(datRepl )
case "Single" 'Single
case "Double" ' Double
....
end select
end if
select case datSource.GetType.Name
case "Int32" ' Integer
return CInt(strDatSource)
case "Single" 'Single
case "Double" ' Double
....
end select
end function
需要注意的是 上面的代碼中 雙引號(hào)類(lèi)的類(lèi)型名要區(qū)分大小寫(xiě) ,當(dāng)然上面的寫(xiě)法不是最好的方法
但是可以一勞永逸作者: heweike 時(shí)間: 2006-4-27 20:12 標(biāo)題: 感謝 我是一名vb.net的初學(xué)者,上面的內(nèi)容對(duì)我很有幫助.感謝