转: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
[url]
http://blog.csdn.net/jxqvip/article/details/6565044
[/url]
分享到:
相关推荐
然后,我们添加了一个`SqlParameter`,名为`@DateTimeValue`,类型设置为`SqlDbType.DateTime`,并将其值设置为`DBNull.Value`,这代表SQL中的`NULL`。最后,我们执行`ExecuteNonQuery()`来执行命令,从而将空值插入...
二、如何在sql语句中判断为NULL的时间字段 假设表为:TestTable SN DateTime1 DateTime2 1 2011-10-24 2011-10-25 2 NULL 2011-10-26 3 2011-10-25 NULL 用case进行查询,若写成: select (case DateTime1 ...
在 SQL Server 中,数据类型是指定用于存储数据的格式。正确选择数据类型对于确保数据完整性、提高性能以及减少存储空间至关重要。本文将详细介绍 SQL Server 中常见的数据类型及其应用场景。 #### 二、整型数据...
例如,SQL Server中的`datetime`在SQLite中可能需要转换为`datetimeoffset`或`text`。工具需要进行这种类型转换,以确保数据能够正确存储和检索。 4. **SQL语句转换**:SQL Server的T-SQL语法与SQLite的SQL语法有...
在SQL Server中,数据类型是定义数据库中存储的数据类型的规范,它们决定了数据的性质和范围。理解SQL Server的数据类型对于数据库设计和开发至关重要。本文将深入探讨SQL Server中常用的数据类型,帮助您更好地掌握...
在讨论SQL Server数据库中的datetime类型时,首先需要了解datetime是SQL Server提供的一个数据类型,用于存储日期和时间值。其范围是从1753年1月1日到9999年12月31日,精度达到3.33毫秒。这是在数据库设计中常用的...
在C#编程语言中,日期类型(DateTime)用于表示日期和时间信息。有时,我们可能需要将日期类型的变量设置为“空”或“无值”的状态。在C#中,这种状态通常用null或者DateTime.MinValue来表示。让我们深入探讨如何在...
- 如果MySQL和SQL Server的数据类型不完全匹配,可能需要在导入过程中进行数据类型转换。例如,MySQL的`TINYINT`可能需要转换为SQL Server的`BIT`,`DATE`可能需要转换为`DATETIME`。 - 如果数据格式不兼容,如...
- 实验目的:理解SQL Server的逻辑结构和物理结构,学习表的结构,了解数据类型和空值概念,掌握创建数据库和表的方法。 - 实验内容:创建名为YGGL的数据库,设置其逻辑文件和日志文件的大小及增长策略。使用"对象...
**定义**:`DateTime`是一种用于存储日期和时间的数据类型。 **用途**:记录具体的日期和时间信息。 #### DDL Trigger (DDL触发器) **定义**:`DDL Trigger`是在数据定义语言事件上触发的触发器。 **用途**:...
SQL Server是一款广泛应用的关系型数据库管理系统,它支持丰富的数据类型和复杂的查询操作。在SQL Server中,我们主要通过两种语言来管理数据:DDL(Data Definition Language)用于定义数据结构,而DML(Data ...
在编程和数据库操作中,经常会遇到“SqlDateTime溢出”的问题,这主要涉及到日期和时间类型的数据处理。本文将深入探讨这个问题的根源、影响以及如何有效地解决它。 首先,让我们理解SqlDateTime溢出的原因。在SQL ...
《SQL SERVER 2000实用教程》涵盖了SQL Server 2000中的核心概念和技术,包括用户定义数据类型和数据库的创建与管理。在SQL Server中,用户定义数据类型(UDT)允许用户根据需求定制自己的数据类型,增强数据的一致...
根据提供的文件信息,我们可以深入分析并提取出与“SQL Server 表数据导出脚本”相关的几个关键知识点。 ### 知识点一:SQL Server 存储过程的创建与...这些知识点对于理解和实现SQL Server表数据的导出脚本非常关键。
在SQL Server中,对表的操作包括创建、查询、修改和删除等。 - **数据完整性**: - **实体完整性**:确保每一行数据都是唯一的实体。 - **域完整性**:检查每一列的数据是否有效。 - **引用完整性**:确保所有表...
标题《SQL Server 2005入门》和描述中提到的是关于SQL Server 2005的入门级教程,重点在于SQL语句的用法和数据库函数的使用,特别适合初学者。下面将详细展开这些知识点。 首先,SQL Server 2005是微软推出的一款...
表类型和表值参数的引入,使得可以在存储过程和函数中传递整个表作为参数,极大地增强了SQL Server的程序设计能力。 ### MERGE语句和分组集增强 MERGE语句的加入,提供了一种更高效的方式将多个源数据集合并到目标...