zoukankan      html  css  js  c++  java
  • 转:SqlServer中的datetime类型的空值和c#中的DateTime的空值的研究

    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

    http://blog.csdn.net/jxqvip/article/details/6565044

  • 相关阅读:
    【水题递归】【HDU2044】我大沙茶了
    【小知识+小细节】不断更新ing...
    【数学三角恒等变幻】【HDU2552】三足鼎立
    【set&&sstream||floyed判环算法】【UVa 11549】Calculator Conundrum
    【CCTYPE函数系列】
    【输入输出挂】【Uva11462】Age Sort
    【树形贪心】【UVA1267】Network
    【贪心】【uva11520】 Fill the Square
    动态规划uva12563
    紫书ch9 uva12563
  • 原文地址:https://www.cnblogs.com/OnlyDreams/p/2419431.html
Copyright © 2011-2022 走看看