DBNull.Value 字段的用法


DBNull 是一個單獨的類,這意味着該類只能存在此實例。它指數據庫中數據為空(<NULL>)時,在.net中的值

如果數據庫字段的數據缺失,則您可以使用 DBNull.Value 屬性將 DBNull 對象值顯式分配給該字段。然而,大部分數據提供程序會自動進行分配。

若要計算數據庫字段以確定其值是否為 DBNull,則可以將字段值傳遞給 DBNull.Value.Equals 方法。但此方法不常用,因為有許多其他方式可計算數據庫字段是否缺少數據。

例如:

if (! DBNull.Value.Equals(row[fieldName])) 
      return (string) row[fieldName] + " ";
   else
      return String.Empty;

DBNull.value==數據庫中的null值...

DBNull.value是對datatable來說的,他就相當於DB中的null,datatable中的null值只有用DBNull.value才能比較,

例如:drow[0]==DBNull.value;

延伸閱讀:

一、對表進行插入操作,如datetime和int類型的兩個字段,都允許為null,
用“sqlcmd.Parameters.Add("@t12",tb12.Text)”參數綁定時。datetime類型時,tb12.Text為空,插入成功,不報錯,查看該值,卻為1900-01-01;int類型時,用同樣語句,tb12.Text為空,插入成功,不報錯,查看該值,卻為0;用“sqlcmd.Parameters.Add(new SqlParameter("@t12",SqlDbType.DateTime));sqlcmd.Parameters["@t12"].Value=tb12.Text;”語句時,tb12.Text為空插入則報錯。

sqlcmd.Parameters.Add(new SqlParameter("@t12",SqlDbType.DateTime));
if (tb12.Text.Length>0)
{
sqlcmd.Parameters["@t12"].Value=tb12.Text
}
else
{
sqlcmd.Parameters["@t12"].Value = System.DBNull.Value;
}

二、
以下是我測試的一個例子。
例:表tbl_Student
id    name    address
1      jim      <NULL>
將上述表數據填充到.net 的名為dt的DataTable中。
dt.Rows[0]["address"]不等於null但是等於DBNull.Value.
可見null表示一個對象的指向無效,即該對象為空對象。
DBNull.Value表示一個對象在數據庫中的值為空,或者說未初始化,DBNull.Value對象是指向有效的對象。

另外注:對上述dt,如果有如下代碼:dt.Rows[0][100]。結果如何?
並非想象中的null。而是出現異常:索引超出數組界限。
對於普通的引用類型變量,如果指向對象為null,則會提示:未將對象引用設置到對象實例。但對於使用dt.Rows[i][j]取值,如果第i行存在但i行沒有j列,則直接出現異常,不會返回一個指向null的dt.Rows[i][j]。
所以:使用(dt.Rows[0][100]!=null)判斷沒有意義。為避免0行的100列不存在。可以判斷(dt.Rows[0].ItemArray.Length>100).


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM