解决asp.net(C#)中 DataTime 空值 null为0001-01-01
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
eg:
#Eval("CANCELACCT_DATE").ToString() == DateTime.MinValue.ToString() ? string.Empty :。。。。。
解决asp.net(C#)中 DataTime 空值 null为0001-01-01的更多相关文章
- 如何解决 ASP.NET Core 中的依赖问题
依赖性注入是一种技术,它允许我们注入一个特定类的依赖对象,而不是直接创建这些实例. 使用依赖注入的好处显而易见,它通过放松模块间的耦合,来增强系统的可维护性和可测试性. 依赖注入允许我们修改具体实现, ...
- JS去除对象或数组中的空值('',null,undefined,[],{})
javascript去掉对象或数组中的'',null,undefined,[],{}.思路就是创建一个新的空对象,然后对传入的对象进行遍历,只把符合条件的属性返回,保留有效值,然后就相当于把空值去掉了 ...
- 解决asp.net mvc中*.resx资源文件访问报错
个人笔记 问题重现 在asp.net mvc中,使用资源文件会出现一个问题,例如: 紧接着我进入视图界面,输入下面代码: <a href="javascript:void(0);&qu ...
- asp.net(C#)中 DataTime 赋空值的研究
SqlServer中的datetime类型的空值和c#中的DateTime的空值的研究 在SqlServer 2000中datetime 的空值即默认值为1900-01-01 00:00:00,C#中 ...
- 解决Asp.net Mvc中使用异步的时候HttpContext.Current为null的方法
在项目中使用异步(async await)的时候发现一个现象,HttpContext.Current为null,导致一系列的问题. 上网查了一些资料后找到了一个对象: System.Threading ...
- 用工厂模式解决ASP.NET Core中依赖注入的一个烦恼
这是最近在实际开发中遇到的一个问题,用 asp.net core 开发一个后端 web api ,根据指定的 key 清除 2 台 memcached 服务器上的缓存.背景是我们在进行 .net co ...
- 解决ASP.NET MVC4中使用Html.DropDownListFor显示枚举值默认项问题
从ASP.NET MVC 5开始,Html.DropDownListFor已经提供了对Enum的支持,但在这以前,需要通过帮助方法或扩展方法来让Html.DropDownListFor显示枚举值. 本 ...
- 解决Asp.net Core中chtml文档中文乱码的问题
原因 由于Visual Studio 2017在保存chtml时,文本格式非utf-8,所以导致中文会出现乱码情况. 解决办法 在工具->扩展与更新中添加插件"ForceUTF8 (w ...
- 解决asp.net MVC中 当前上下文中不存在名称“model” 的问题
在vs2013下打开同事上传的cshtml视图文件报错,出现当前上下文中不存在名称“model”,ViewBag,Url等等,在视图中也没有智能提示了:但是不影响编译运行,只是开发时候比较麻烦,但在同 ...
随机推荐
- html 输入框 只能输入数字 只能输入字母数字组合
JS判断只能是数字和小数点 1.文本框只能输入数字代码(小数点也不能输入) <input onkeyup="this.value=this.value.replace(/\D/g,'' ...
- 十一个行为模式之模板方法模式(Template Method Pattern)
定义: 定义一个操作中算法的框架,并且将一部分操作延迟到子类当中.使得子类可以不改变一个算法的结构即可重新定义算法步骤. 结构图: AbstractClass:抽象方法类,定义了一些基本操作,这些操作 ...
- discuz 3.x 核心文件class_core.php解析
class_core.php是discuz 3.x的核心文件,几乎所有PHP脚本都有引用此文件初始化论坛运行环境.以下解析引用3.2版discuz. line 12-15:常量定义IN_DISCUZ: ...
- Sqlserver 中系统表sysobjects、syscolumns以及函数object_id
1.sysobjects 系统对象表. 保存当前数据库的对象,如约束.默认值.日志.规则.存储过程等 sysobjects 重要字段解释: sysObjects ( Name sysname, --o ...
- div层调整zindex属性无效原因分析及解决方法
在做的过程中,发现了一个很简单却又很多人应该碰到的问题,设置Z-INDEX属性无效.在CSS中,只能通过代码改变层级,这个属性就是z- index,要让z-index起作用有个小小前提,就是元素的po ...
- 火狐下多个span连在一起和换行写存在差异
当父元素的宽度确定,多个span换行写,span加起来占的宽度比预设的大
- 更改Visual Studio 2015 默认的语言设置
Vs支持多种语言,但有可能创建项目时,默认的开发语言不是你需要的,比如:默认是Visual C++ 你可以通过"工具"----选项----导入和导出设置来修改. 引用: https ...
- 把Sharepoint Desinger 工作流部署到生产环境
下面是比较简单的方法,把Designer工作流从开发环境部署到生产环境. 在Sharepoint Desinger 2013 中点击需要部署的工作流. 点击保存,发布. 点Export to Visi ...
- python之(re)正则表达式上
python正则表达式知识预备 正则表达式使用反斜杠" \ "来代表特殊形式或用作转义字符,这里跟Python的语法冲突,因此,Python用" \\\\ "表 ...
- [css]我要用css画幅画(四)
接着之前的[css]我要用css画幅画(三), 今天,我画了两朵云,并给小明介绍了个朋友:静静. github:https://github.com/bee0060/Css-Paint , 完整代码在 ...