当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > .NET和SQL Server中“空值”辨析

ASP.NET
探讨:ASP.NET技术的学习顺序问题
关于ASP.NET在IIS一些问题的经验总结
ASP.NET中通过对话框方式下载文件
ASP.NET网络编程中常用到的27个函数集
ASP.NET生成静态网页的方法
ASP.NET 2.0中实现弹窗报警提示
复杂ASP.NET服务器控件调整小技巧
ASP.NET调用oracle存储过程实现快速分页
VB.NET实现窗体图标最小化到状态栏
ASP.NET技巧:DataGrid传统分页方式
ASP.NET里的事务处理
ASP.NET 2.0高级数据处理之数据绑定
ASP.NET多频道网站架构实现方法
.NET vs J2EE——面对SOA的荒谬与误解
ASP.NET 2.0中执行数据库操作命令之一
ASP.NET应用程序资源访问安全模型
ASP.NET 2.0中的Web和HTML服务器控件
对.NET Framework 反射的反思
带你走进ASP.NET(1)
带你走进ASP.NET(2)

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 57 ::
收藏到网摘: n/a

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

 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从数据库得到的空字符串也和一般的字符串没什么区别。

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