中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

將不確(que)定(ding)變為確(que)定(ding)~DateTime.MinValue和MaxValue引發的異常

回到目錄

問題描述:

SqlDateTime 溢出。必須(xu)介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM 之間

概念相關

.Net中的(de)(de)(de)DateTime結構類(lei)中的(de)(de)(de)MinValue和(he)MaxValue有時(shi)(shi)會引發一(yi)個異(yi)常,那(nei)就是(shi)日期(qi)溢出(chu)的(de)(de)(de)問題,您(nin)輸入的(de)(de)(de)日期(qi)必(bi)須介(jie)于(yu)(yu) 1753 年(nian) 1 月(yue) 1 日到(dao) 9999 年(nian) 12 月(yue) 31 日之間(jian),而(er)DateTime.MinValue實際上(shang)不是(shi)1753 年(nian) 1 月(yue) 1日,而(er)是(shi)0000年(nian)1月(yue)1日,而(er)數據庫可以接(jie)收的(de)(de)(de)日期(qi)時(shi)(shi)間(jian)最(zui)小值為1753/1/1,這時(shi)(shi)由于(yu)(yu).net產生的(de)(de)(de)DateTime.MinValue遠遠小于(yu)(yu)它,所以,它出(chu)現了日期(qi)溢出(chu)的(de)(de)(de)問題。

解決問題

我們作一個測試:

   Console.Write(DateTime.MinValue);
    Console.Write(DateTime.MaxValue);

它的結果為:

所以,如果(guo)你在程(cheng)序中,進(jin)行數(shu)據庫(ku)查詢時,需(xu)要(yao)對(dui)日(ri)期(qi)進(jin)行查詢,如果(guo)希望給日(ri)期(qi)變量一個默認值,那不會使用DateTime.MinValue,而(er)要(yao)使用SQL的數(shu)據結(jie)果(guo)中的MinValue,它位于System.Data.SqlTypes名稱空間下(xia),表(biao)示與SQLSERVER對(dui)應的數(shu)據類型,測試代碼(ma)如下(xia):

 Console.WriteLine(System.Data.SqlTypes.SqlDateTime.MinValue);
 Console.WriteLine(System.Data.SqlTypes.SqlDateTime.MaxValue);

它的結果為:

它在程序(xu)中(zhong)的體現為:

     /// 用戶列表
        /// </summary>
        /// <param name="username"></param>
        /// <param name="deptname"></param>
        /// <param name="page"></param>
        /// <returns></returns>
        public ActionResult Index(
            string username,
            string deptname,
            DateTime? startTime,
            DateTime? endTime,
            int? page)
        {

            UserManager userManager = new UserManager();
            ViewData["SiteMapID"] = 11;

            var specification = new UserSpecification(startTime, endTime, username, deptname);
            var model = userManager.GetWebManageUsers(specification, new PageParameters(page ?? 1, base.PageSize));
            model.AddParameters = new System.Collections.Specialized.NameValueCollection();
            model.AddParameters.Add("username", username);
            model.AddParameters.Add("deptname", deptname);
            model.AddParameters.Add("startTime", (startTime).ToString());
            model.AddParameters.Add("endTime", (endTime).ToString());

            if (Request.IsAjaxRequest())
                return PartialView("List", model);
            return View(model);
        }

在上面(mian)的(de)代碼中,我們(men)的(de)DateTime類(lei)(lei)型,由于與數據(ju)庫查詢(xun)相關,所以,可以使用SqlDateTime類(lei)(lei)型代替!

回到目錄

posted @ 2013-07-12 18:09  張占嶺  閱讀(12989)  評論(0)    收藏  舉報