`
风火山林
  • 浏览: 147213 次
  • 性别: Icon_minigender_1
  • 来自: 汕尾
最近访客 更多访客>>
社区版块
存档分类
最新评论

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

阅读更多
初学数据库编程我们可能会有一些对“空值”的疑问,比如通过编程新建的一个表中所有数据皆显示为<NULL>,手动添加并删除文字后又变成了空白;一个字符串类型的字段,明明没有填值,却不等于"";用ADO.NET从数据库中取值,每遇到有<NULL>的就出错……这需要我们正确认识.NET和SQL 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(注意这个null是C#.NET中的null而非SQL Server中null),它们在.NET中是表示不引用任何对象的空引用的值,在传入SQL server时,根据不同的上下文环境,可能存为真正的空值(比如在更新一个字符串类型的字段值时),也可能调用在SQL server中自定义的默认值(比如传给一个有默认值的存储过程参数),也可能因为无法进行类型转换而引发.NET异常。因此在用ADO.NET向SQL server中存储数据时要慎用Nothing。
分享到:
评论

相关推荐

    探讨SQL Server数据库中空值处理技巧

    探讨 SQL Server 数据库中空值处理技巧 在 SQL Server 中处理空值是数据库系统中非常重要的一方面。空值的存在可能会导致数据不完整、计算错误、外键处理问题等。因此,了解如何正确地处理空值是非常必要的。本文将...

    SQL Server中的空值问题.pdf

    在SQL Server中,空值可以分为存在型空值、不存在型空值和占位型空值。存在型空值是指某个应当存在的数据值实际上缺失了,例如个人档案中的电话号码字段,如果某人未提供,则为存在型空值。不存在型空值表示该值对于...

    oraclesql判断值为空-Oracle-sqlserver的空值(null)判断.pdf

    Oracle SQL 中判断值为空或 Null 的方法有多种,在本文中,我们将介绍 Oracle 和 SQL Server 中的空值判断方法。 Oracle 中的空值判断 在 Oracle 中,可以使用 `NVL` 函数来判断值为空或 Null。`NVL` 函数的语法...

    c#往sqlserver2000数据库中插入时间型数据的空值

    然后,我们添加了一个`SqlParameter`,名为`@DateTimeValue`,类型设置为`SqlDbType.DateTime`,并将其值设置为`DBNull.Value`,这代表SQL中的`NULL`。最后,我们执行`ExecuteNonQuery()`来执行命令,从而将空值插入...

    SQL Server数据库中处理空值时常见问题

    SQL Server 数据库中处理空值时常见问题 数据完整性是任何数据库系统要保证的重点。不管系统计划得有多好,空数据值的问题总是存在。本文探讨了在 SQL Server 中处理这些值时涉及的 3 个问题:计数、使用空表值以及...

    ASP.NET Excel导入SQLserver 数据库中

    在ASP.NET中,将Excel数据导入到SQL Server数据库是一个常见的需求,这主要涉及到文件上传、数据读取和数据库操作等技术。以下是对这个主题的详细解释: 首先,我们需要使用ASP.NET的FileUpload控件来实现Excel文件...

    sqlserver 中时间为空的处理小结

    二、如何在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 ...

    C#+存取SqlServer中的Image类型

    在C#中,我们通常使用ADO.NET库来连接和操作SQL Server数据库。首要步骤是创建一个`SqlConnection`对象,指定服务器名称、数据库名、用户名和密码。例如: ```csharp string connectionString = "Server=...

    SQL Server 2008 R2开启数据库的远程连接及客户端配置

    需要做两个部分的配置:SQL Server Management Studio(简写 SSMS)和 SQL Server 配置管理器/SQL Server Configuration Manager(简写 SSCM)。 SQL Server Management Studio(SSMS)配置 1. 打开 sql2008,使用...

    asp.net中对数据库表插入null空值的问题

    ### ASP.NET中对数据库表插入NULL空值的问题 在ASP.NET开发过程中,向数据库表插入数据时遇到NULL值处理不当的...通过上述方法,可以有效地解决ASP.NET中数据库表插入NULL空值的问题,提高应用程序的稳定性和可靠性。

    SQL Server数据导入SQLite工具

    7. **数据预处理**:在迁移前,可能需要对SQL Server的数据进行清洗和预处理,比如处理空值、异常值或不一致的数据。 8. **错误处理和日志记录**:工具应具备良好的错误处理机制,当遇到问题时能够记录并报告错误,...

    Excel数据导入到SQLServer数据库中

    在IT行业中,数据管理和操作是核心任务之一,而Excel与SQL Server之间的数据交互是一个常见的需求。Excel作为一种便捷的数据处理工具,常用于数据整理和分析,而SQL Server则是一个强大的关系型数据库管理系统,适用...

    C++builder与SQL server连接

    在C++Builder中连接SQL Server数据库是常见的需求,这对于实现数据驱动的应用程序至关重要。本文将详细讲解如何在C++Builder中建立与SQL Server的连接,并介绍相关的关键知识点。 首先,要连接SQL Server,你需要...

    oracle 和sql Server 函数对比

    在IT行业中,数据库管理系统(DBMS)是至关重要的组成部分,其中Oracle和SQL Server是最为广泛使用的两种DBMS。它们各自提供了丰富的内置函数来处理数据,包括数值、字符串、日期时间等类型的操作。本文将深入探讨...

    实现ORACLE与SQLSERVER数据库间的数据抽取与转换工具

    本文将探讨如何实现一个工具,用于在Oracle和SQL Server数据库之间进行数据的抽取与转换。Oracle是广受欢迎的关系型数据库管理系统,而SQL Server是微软公司推出的另一款强大的数据库平台。在不同的数据库系统间进行...

    SQL Server ppt教学

    在SQL Server中,数据以行和列的形式存储在表中,这些表又组织在数据库中。数据库是一个集合,包含了相关的数据以及控制数据的结构和规则。理解数据模型,如实体关系模型(ER模型),对于设计和管理数据库至关重要。...

    SqlServer查看表结构

    以下是一段用于在SQL Server中查看指定表结构的SQL脚本示例: ```sql declare @table_name as varchar(max) set @table_name = 'Ҫ鿴ı' -- 这里假设你想查看名为'Ҫ鿴ı'的表的结构 -- 查询列名、数据类型、最大...

    oracle和sqlserver数据迁移VB代码

    在IT行业中,数据库管理系统(DBMS)如Oracle和SQL Server是关键的数据存储和处理平台。在不同的业务场景下,有时我们需要将数据从一个数据库系统迁移到另一个,这通常涉及到数据的提取、转换和加载(ETL)过程。...

    SqlServer转换Oracle.docx

    在SQL Server中使用的是`.NET Framework`下的`SqlConnection`类来建立连接,而在Oracle中则需使用`OracleConnection`类。下面是一段示例代码: ```csharp private static object GetConnection(out string error...

    .net treeview sql 数据绑定

    首先,我们看到代码中使用了多种.NET Framework的相关命名空间,包括System.Data.SqlClient,这表明我们将使用SQL Server作为数据源。`SqlConnection`和`SqlCommand`类用于连接数据库并执行SQL查询,而`...

Global site tag (gtag.js) - Google Analytics