.NET和SQL Server中“空值”辨析

2016-01-29 13:29 7 1 收藏

.NET和SQL Server中“空值”辨析,.NET和SQL Server中“空值”辨析

【 tulaoshi.com - ASP.NET 】

初学数据库编程我们可能会有一些对“空值”的疑问,比如通过编程新建的一个表中所有数据皆显示为<NULL,手动添加并删除文字后又变成了空白;一个字符串类型的字段,明明没有填值,却不等于"";用ADO.NET从数据库中取值,每遇到有<NULL的就出错……这需要我们正确认识.NET和SQL Server中几种不同的“空值”。

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com)

 1、真正的空值,也就是“没有输入的值”,可以出现在大多数类型的字段中(如果没有别的约束条件),SQL server中表示为null,显示为<NULL,手工在SQL server企业管理器中输入的方法是按Ctrl+0。它在.NET中对应System.DBNull.Value。在T-SQL命令中,判断一个值是不是空值,要用“is null”而不是“= null”;处理空值有个ISNULL函数,它使用指定的值替换null。用ADO.NET从数据库得到的空值无法自动转化为空字符串或Nothing,须手动检测:如果得到System.DBNull.Value,则赋给数据对象Nothing或其它自定义的有意义的值。

 2、空字符串(零长度字符串),只出现在字符串类型(如nvarchar)的字段中,SQL server中表示为'',显示为空白,手工在SQL server企业管理器中输入时清空一个单元格即可。它在.NET中对应System.String.Empty,也就是我们常用的""。在T-SQL命令中处理空字符串和处理一般的字符串没什么区别。用ADO.NET从数据库得到的空字符串也和一般的字符串没什么区别。

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com)

 相关的概念还有VB.NET中的Nothing和对应于C#.NET中的null(注意这个null是C#.NET中的null而非SQL Server中null),它们在.NET中是表示不引用任何对象的空引用的值,在传入SQL server时,根据不同的上下文环境,可能存为真正的空值(比如在更新一个字符串类型的字段值时),也可能调用在SQL server中自定义的默认值(比如传给一个有默认值的存储过程参数),也可能因为无法进行类型转换而引发.NET异常。因此在用ADO.NET向SQL server中存储数据时要慎用Nothing。

来源:http://www.tulaoshi.com/n/20160129/1490377.html

延伸阅读
标签: SQLServer
有这样一个要求,它要创建一个SQL Server查询,其中包括基于事件时刻的累计值。典型的例子就是一个银行账户,因为你每一次都是在不同的时间去存钱和取钱。对任意一个账户来说,在某个时间点都要算出它的借(存款)和贷(取款)之和。每一笔交易之后,你都想知道当前的余额。 列表A 创建了这样一个表格的简单的例子。 列表 A CREATETABLE [...
标签: SQLServer
本文将解释如何在SQL Server 2005中以尽可能最简单的方法创建基于.NET的CLR子例程。本文主要针对在服务器端使用SQL Server 2005的.NET开发者。 一. 创建SQL Server 2005数据库 这一节主要讨论创建一个将用于本文中的数据库和表格。详见下列步骤: · 执行"Start-Programs-Microsoft SQL Server 2005-SQL Server Management S...
1.图片文件写入             Dim tmpImg As image                                 Dim r As DataRow&...
前几天在把一个Communtiy Server 的数据库从SQL 2000升级到SQL 2005 的时候,碰到一个怪异的问题,报如下错误: Violation of PRIMARY KEY constraint 'PK_cs_Threads'. Cannot insert duplicate key in object 'dbo.cs_Threads'. 分析进去后,竟然...
标签: SQLServer
任何新软件发布的时候,你都会发现一些你不知道它的存在或者你不知道你需要的新特性。SQL Server 2000中的许多备份和重新存储方面的特性都原封不动地保留在SQL Server 2005中,但是也有一些新的特性值得你考虑一下。 镜像备份 SQL Server 2005让你创建镜像备份。镜像备份可以让你创建2个或者4个相同的备份文件的拷贝,以防某个集合被...

经验教程

459

收藏

54
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部