这是我在开发多层体系结构时遇到的问题,由于
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[]
|
|
转载于:https://blog.51cto.com/bearstudyhard/299484