程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 在C#和SQL Server數據庫中怎麼給DateTime類型賦null值、null和""的區別

在C#和SQL Server數據庫中怎麼給DateTime類型賦null值、null和""的區別

編輯:C#入門知識

今天在將數據庫裡的datetime類型數據賦給C#裡DateTime類型變量的時候遇到一個問題,那就是數據庫裡面的datetime數據存在null值。

C#默認不能將null賦給DateTime變量,但是可以使用Nullable類型的DateTime,只需在聲明變量的時候在DateTime後加一個?號,如:

DateTime? x ;

x便可以賦null值。

但是從數據庫的datetime類型變為C#的DateTime類型需要Convert.ToDateTime();如果數據庫裡面的datetime數據為null的話,這個方法是不能使用的。

於是我加了個if語句:

if((row["date1"])!=null)

但是這個if語句無效,改成

row["date1"].ToString()!=null

仍然無法判斷數據庫中的datetime類型的列date1是否為null。

後來更改為row["date1"].ToString()!=""終於可以判斷了。完整語句為:

DateTime? x;

if(row["date1"].ToString()!="")

x=Convert.ToDateTime(["date1"]);

else

x=null;

注意最後x只能賦null,而不能像原來數據庫數據一樣賦""。因為x被聲明為Nullable<DateTime>類型變量的。

這樣,如果將x在存入數據庫的話,數據庫裡顯示為1900-1-1.

null和""在C#中的區別是前者沒有指向任何String對象,而後者為長度為0的String對象,且為其分配了內存空間。

但是剛剛試了一下,不論""或null存入數據庫的時候都是1900-1-1,如果想在數據庫裡也為null的話,可以選擇當x為null或""時,不存入數據庫中的相關列。

    

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved