在做機房收費系統時,每當從資料庫中查詢資料並顯示到窗體介面時,如果查詢的記錄中有字段值為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 plain
copy
public
function
executedataset(
byval
cmdtext
asstring
, byval
cmdtype
ascommandtype,
byval
parameter
assqlparameter())
asdataset
dimsqladapter
assqldataadapter
dimds
asdataset =
newdataset()
cmd.connection = conn
cmd.commandtext = cmdtext '設定執行的sql語句
cmd.commandtype = cmdtype '執行語句的型別
cmd.parameters.addrange(parameter) '新增引數
sqladapter = new
sqldataadapter(cmd)
tryconn.open()
sqladapter.fill(ds, "newtable"
)
'把從資料來源中選取的行新增到資料集中
return
ds
'返回資料集ds
catch
ex as
exception
return
nothing
finally
call
closecmd(cmd)
endtry
endfunction
要解決以上null值問題,executedataset()方法是這樣寫的:
(注意與修改前**的區別:主要是加了乙個for迴圈,來判斷返回的資料集的表中的每一行的每個字段是否有null值,如果有,則把該字段值改為空值" ")
[vb]view plain
copy
public
function
executedataset(
byval
cmdtext
asstring
, byval
cmdtype
ascommandtype,
byval
parameter
assqlparameter())
asdataset
dimsqladapter
assqldataadapter
dimds
asdataset =
newdataset()
cmd.connection = conn
cmd.commandtext = cmdtext '設定執行的sql語句
cmd.commandtype = cmdtype '執行語句的型別
cmd.parameters.addrange(parameter) '新增引數
sqladapter = new
sqldataadapter(cmd)
tryconn.open()
sqladapter.fill(ds, "newtable"
)
'把從資料來源中選取的行新增到資料集中
"background-color: #ff0000"
>
'將資料集中為null值的字段值轉換為空值
fori = 0
tods.tables(
"newtable"
).rows.count - 1
forj = 0
tods.tables(
"newtable"
).columns.count - 1
ifisdbnull(ds.tables(
"newtable"
).rows(i)(j))
then
'判斷資料集中的每條記錄的每個字段是否為null,如果為null則,設定字段值為空值" "
ds.tables("newtable"
).rows(i)(j) =
" "'將字段為null的值設定為空值" "
endif
next
next
return
ds
'返回沒有null值的資料集ds
catch
ex as
exception
return
nothing
finally
call
closecmd(cmd)
endtry
endfunction
當然,解決null值問題的方法還有很多,比如可以在設計資料庫表時,規定每個字段值不許為空:
還可以用isdbnull來判斷,等等。
資料庫 null值處理及元資料
我們已經知道 mysql 使用 sql select 命令及 where 子句來讀取資料表中的資料,但是當提供的查詢條 件字段為 null 時,該命令可能就無法正常工作。為了處理這種情況,mysql提供了三大運算子 is null 當列的值是 null,此運算子返回 true。is not null...
程式處理資料庫中值字段值為null的查詢顯示
1.如果你做了乙個簡單的註冊介面,需要使用者進行註冊,但有些項是不必要填的,當使用者完成註冊時,資料庫表中的相應欄位的值會寫入null,但如何將查詢的字段的值null顯示出來?2.首先我們學習一下如何向資料庫的相應字段插入null值,這就需要朋友們先了解一下dbnull 程式中的null值 當前臺的...
資料庫的null值
資料庫的null值給我開了乙個小玩笑,同時我也記住了以後遇到這種問題要怎麼處理了。在我的link表中backupid欄位只有2個值 2 和null。現在我想排除掉backupid字段值為2的記錄,剩下所有為null的記錄。我在pl sql中執行如下語句,得不得任何記錄結果 select from l...