这是我在开发多层体系结构时遇到的问题,由于 VS.NET 尚不支持各种数据类型的空值即 null ,放入实体类中在各个层之间作为参数传递,所以经查询参考 SQL Server 2000 的联机丛书和 .NET M<?xml:namespace prefix = st1 ns = "Tencent" />SDN Library 以及在编写代码生成时结合 CodeSmith 的数据类型,总结找出如下的类型对照解决方案,将其放在一个公用类或公用方法工程的类中使用即可,遇到各种数据类型的空值即可这样进行处理。 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

SQL Server 2000

C#

CodeSmith

数据类型

取值范围

数据类型

取值范围

空值代替值

数据类型

bigint

-2^63 (-9,223,372,036,854,775,807) 2^63-1 (9,223,372,036,854,775,807)

Int64

-9,223,372,036,854,775,808 ;即十六进制的 0x8000000000000000 9,223,372,036,854,775,807 ;即十六进制的 0x7FFFFFFFFFFFFFFF

Int64.MinValue

Int64

binary

固定长度的 n 个字节二进制数据。 N 必须从 1 8,000 。存储空间大小为 n+4 字节。

Byte[]

 

null

Binary

bit

True False

enum

0 1 -1 (使用一个枚举变量来代替)

public enum bitNull   

{

    False,

    True,

    Null = -1

};

- 1

Boolean

char

长度为 n 个字节的固定长度且非 Unicode 的字符数据。 n 必须是一个介于 1 8,000 之间的数值。存储大小为 n 个字节。

string

 

null

AnsiStringFixedLength

datetime

存储从 <?xml:namespace prefix = st2 ns = "urn:schemas-microsoft-com:office:smarttags" />1753 1 1 日至 9999 12 31 日的日期(每个数值要求 8 个字节的存储空间)

DateTime

0001 1 1 00:00:00 .0000000 9999 12 31 23:59:59.9999999

1753-01-01 0:00:00

DateTime

decimal

- 10^38 +1 10^38 - 1

Decimal

-79,228,162,514,264,337,593,543,950,335 79,228,162,514,264,337,593,543,950,335

Decimal.MinValue

Decimal

float

- 1.79E + 308 1.79E + 308 之间的浮点数字数据

Double

-1.79769313486232e308 +1.79769313486232e308

Double.MinValue

Double

p_w_picpath

可变长度二进制数据介于 0 231-1 (2,147,483,647) 字节之间。

Byte[]