APP下载

基于ASP.NET+SQL SERVER可空类型数据的转换研究

2013-04-29李晓明

新课程·中旬 2013年9期

李晓明

摘 要:就基于ASP.NET连接访问SQL Server数据库中可空类型数据和不可空类型数据的阐述。列举ASP.NET和SQL Server可空类型数据的差异及类型转换的方法。对可空类型数据转换给出解决方案。

关键词:可空类型数据;Null;类型转换

ASP.NET是一个全新和强大的服务器控件结构,ASP.NET环境中提供ADO.NET的访问接口,通过它连接SQL Server。两家软件公司对可空类型数据的定义存在着差异,所以在程序设计过程中会出现类型数据转换不符的系统错误。

一、可空类型数据和不可空类型数据

1.SQL Server中的可空类型数据和不可空类型数据

SQL Server数据库中对表结构进行定义时,任何一种类型都可以设置为可空类型或不可空类型。如下图1所示:

允许空值选中。这代表着id这个列名的数据类型是可空的,反之,数据的类型是不可空的。所以判断SQL Server中的数据类型是可空的只要看允许空选项是否选中。

2.在ASP.NET中的可空类型数据与不可空类型数据

ASP.NET中提供多种编程语言环境。以C#为例,C#中基本的数据类型为值类型和引用类型。C# 2.0以上版本中新增加了可空类型,即包含Null值的值类型。而不可空类型数据一般是值类型,如int,boolean,decinal,datetime等。当我们最终把数据库表映射到一个对象时,此时如datetime等值类型在C#语言中是不能为Null。

3.Null与"",0的区别

“Null”和数据空不是同一个概念。实际上,Null代表是空值,是“可以让它是空的”的数据值,数据空可能是数字“0”,也有可能是空格数据"",它所呈现的值取决于数据库表中的数据类型定义,如是整型或其他数值类型,则数据空为默认数字的“0”。但不能输入Null。如是String字符串类型,默认值为Null,可以输入"",也可能输入字符0。

4.可空类型数据的实际应用

C#程序设计中,常用到可空类型数据与不可空类型数据。C#中的其他值类型数据都可能在程序运行的过程出现“不显示”或“不设置”这种情况。这些需通过类型数据的转换,符合设计和应用人员的要求。如何解决值类型也能为可空类型?用什么方法进行类型数据转换?

二、可空类型数据转换

1.可空类型数据的转换方法

C#中的不可空类型数据如何转换为可空类型数据。它的转换格式如下如示:

int?nullable=null;

或Nullablenullable=null;

两者的表示是等效的。常用第一种方式。

在类型数据定义符后面加上一个“?”,就可把C#中不可空类型数据转换为可空类型类型。

2.整数类型的转换

下面以例1来加强认识。

例1:整数的互相赋值

INT I1=5;I1赋值为5

INT?I2=I1;//可以赋值int赋值给int?

INT?I3=5;I3赋值为5

INT I4=I3;//不可以赋值int?赋值给int

从上面的几个赋值可知,可空类型数据可以接受同类型的不可空类型的数据。不可空类型数据不能接受可空类型数据。

3.日期类型数据的转换

C#中WPF窗口拖入一个按钮控件和一个日期控件,并对按钮进行设计,如图2所示。

C#中日期类型dateTime是一个不可空的类型数据。datePicker是WPF是一个日期选择控件,其中SelecteDate属性是一个可空的类型。要把datePicker控件所选择的日期数据传递出去。需要进行类型转换。可用以下程序代码解决。

dateTime?value=datePicker1.Selecteddate;

同样的原理,其他的不可空类型数据可以通过在类型标志前加“?”解决可空类型数据的转换。

4.注意事项

(1)因为可空类型可能为空,于是很多运算法则将不再简单适用,如A+B,如果A或者B当中有一个或者两个为可空类型,那么它们便不能简单相加,因为它们可能会为空,这时结果也就可能会为空,所以一定要了解该数据的类型。如果程序编译出现未能转换类型错误,则要考虑该数据类型是否可为空。

(2)可空类型可强制转换为对应的基础类型,但在转换之前一定要知道是否不为空,如果为空的话就会出错。

(3)不要随意使用可空类型,使用时一定要小心,随时了解数据类型是否为空。

可空类型允许变量包含未定义的值。使用SQL Server数据库设计可使用可空类型。而在C#设计环境中这种限制使得我们在开发过程中要相当小心,要考虑的内容较多。通过合理设置可空类型,或进行类型数据的转换,把一些潜在的麻烦或错误消除。

参考文献:

[1]吴晨.ASP.NET2.0+SQL Server2005数据库开发与实例.清华大学出版社,2008.

[2]李春葆,金昌,曾平葆.数据库原理与应用:基于SQL Server

2005.清华大学出版社,2009.

(作者单位 广州市番禺区职业技术学校)

?誗编辑 王志慧