當DB的欄位值設定是允許Null
該欄位的值,是Null 或是空值("")不一樣。

所以取值時,要多一層判斷。(雖然在UI看起來都一樣沒有東西)
Model.txtCustomer = (object)dr["txtCustomer"] is DBNull ? null : dr["txtCustomer"].ToString();
=>DataReader要先轉成Object,並判斷 is DBNull,是的話就給Null值,不是的話就給DB撈出來的值。

寫回DB時,要判斷是否為Null,
cmd.Parameters.AddWithValue("@Customer", model.txtCustomer ?? (object)DBNull.Value);
可用Null聯合運算子??來判斷並給值。

 

str1: 是要判斷的值
str2: 是要存的值

//一般判斷式
                if (String.IsNullOrEmpty(str1))
                {
                    str2 = null;
                }
                else
                {
                    str2 = str1;
                }

//三元運算式
判斷式 ? True:False
Ex: str2 = (String.IsNullOrEmpty(str1)) ? null : str1;

//Null運算式
?? 運算子稱為 null 聯合運算子。如果運算元不是 null,則會傳回左方運算元,否則傳回右方運算元。
Ex: str2 = str1 ?? null;

參考 MSDN: https://msdn.microsoft.com/zh-tw/library/ms173224.aspx

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 sendohlun 的頭像
    sendohlun

    廣度與深度

    sendohlun 發表在 痞客邦 留言(0) 人氣()