asp.net(C#)中 DataTime 賦空值

來源:互聯網
上載者:User

 

SqlServer中的datetime類型的空值和c#中的DateTime的空值的研究

在SqlServer 2000中datetime 的空值即預設值為1900-01-01 00:00:00,C#中DateTime的空值是最小值0001-01-01 00:00:00,對於資料庫的插入,更新為空白值的日期值來說多少有點不如人所願。比如說我插入的是空值我取出的也要是空值,但SqlServer偏偏給了我一個預設值。有點無奈。對於如何協調二者,給我帶來了不少麻煩。

引起這樣的原因是:DateTime和Int,Double一樣都是實值型別,必須有一個值。

解決的辦法:

1.從資料庫的角度:把該欄位的類型改為自訂的字串型,該字串格式為日期樣式。這種辦法比較簡單,其實就是字串型,插入時對插入的字串做日期的正則判斷。

 

2.這種方法是從網上搜尋出於:http://treexyz.spaces.live.com/blog/cns!6667864a1ffeabc7!300.entry 對資料類型null的處理當C#與SQL Server資料類型定義不一致時需要怎麼處理呢?

例如一個DateTime,當DB中該欄位可以為空白時,要求它既能用C#的DateTime賦值,又可以賦SQL Server的null值。

我採用的解決方案是,在Model對應的類中,將該欄位對應的property的資料類型設為object。

賦值時,判斷,若是空值則賦給DBNull.Value。

取值時,判斷,若取到DBNull.Value則顯示null,否則要進行一次資料轉換。

這是為了DA在對DB操作時,若將此欄位作為參數,只需要將get到的值直接賦給salParameter即可。(若model的get不轉換,則DA中要判斷是否要轉換。因為C#的DBNull和DateTime均可賦給sqlDBType.DateTime;反之,sql中取到的空值是以DBNUll.Value出現的,不能賦給C#的DateTime。

Forum有一個很大的特點,就是在調用DB.cs的方法時,參數的類型幾乎都是object。在sp中再仔細定義各參數的格式,由sql自己轉換。對於可空的參數,在sp中定義=null即可。Forum傳一個null參數的情況很多,總是在接收方去判斷參數,有些參數是null寫入資料庫的;但是有些參數如果為null是有其它意義的,需要條件分支代碼去處理。而我習慣於參數首先初始化,如果有不同情況共用同一個方法則增加一個參數用於判斷。我認為使參數為null也有實際意義不是很好的辦法,因為會造成一些不明意義的條件分支,對以後的升級和維護造成潛在的危險。

 

3.如下語句能實現插入:

insert into Employees (lastname,firstname,hiredate) values ('hu','shuai',null),

insert into Employees (lastname,firstname,hiredate) values ('hu','shuaishuai','')

有著明顯不同的結果。可以在Sql 語句上實現。但在程式中,特別是物件導向的程式設計中,在加上三層架構的一些問題。實現起來頗為不便。所以我正在努力尋找一種方法巧妙的實現之,也希望大家給點建議。

三 。

最簡單的方法:

在頁面賦一個預設日期

在sql語句中參數賦值時判斷參數值是否等於預設日期 如果等於為參數賦值DBNull.Value

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.