[Tips]Null轉DBNull.Value

  • 15896
  • 0

[Tips]Null轉DBNull.Value

不管是在ADO.NET或Spring.Net的Adotemplate底下,
通常在處理SQL的部分,都會使用parameter的方式,來避免SQL injection。

而使用parameter時,通常都會有下面類似的動作,將某個值assign給parameter:


objParameters.Add("PERS_AMT", DbType.Decimal).Value =  MyDTO.PersAmt ?? DBNull.Value

而當一堆parameter,可能是int, decimal或datetime,
新增動作時,若物件屬性為Null,應該要assign DBNull.Value給Parameter。

因為MyDTO.PersAmt ?? DBNull.Value這樣的動作會增加程式的複雜度,但事實上是單純不過的事。
為了避免這種處理,引起不必要的複雜度誤會,所以撰寫了個小小的extension method來處理這樣的事情。


        {
            return originalObject ?? DBNull.Value;
        }

在每一個object,都可以使用NullToDBNullValue這個method,
若該object為Null,則return DBNull.Value。
如此一來,不管是int, decimal, double, datetime等型別,都可以使用同一個method來做同一件事。
使用方法就會變成這樣:

簡單講,這個Extension method,就只是把 任何型別當Null的時候,要以DBNull.Value來取代
未來也可以設計成多丟一個參數進來,當為Null時,要回傳該參數。


blog 與課程更新內容,請前往新站位置:http://tdd.best/