您的位置:首页 > 数据库

sql server 数据类型以及SqlParameter赋值时遇到的问题

2011-01-12 10:58 831 查看
Unicode 规格通过采用两个字节编码每个字符使这个问题迎刃而解。转换最通用商业语言的单一规格具有足够多的 2 字节的模式 (65,536)。因为所有的
Unicode 系统均一致地采用同样的位模式来代表所有的字符,所以当从一个系统转到另一个系统时,将不会存在未正确转换字符的问题。通过在整个系统中使用
Unicode 数据类型,可尽量减少字符转换问题。 Unicode 数据使用 SQL Server 中的 nchar、varchar 和 ntext
数据类型进行存储。 bigint 从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807)
的整型数据(所有数字)。存储大小为 8 个字节。 int 从 -2^31 (-2,147,483,648) 到 2^31 - 1 (2,147,483,647)
的整型数据(所有数字)。存储大小为 4 个字节。int 的 SQL-92 同义字为 integer。 smallint 从 -2^15 (-32,768) 到
2^15 - 1 (32,767) 的整型数据。存储大小为 2 个字节。 tinyint 从 0 到 255 的整型数据。存储大小为 1 字节。

需要注意的是

当表中有一字段@MOStatus为tinyint时,而且同时有一个MOQueue_Create的插入记录的存储过程。

如果在调用存储过程的时候这样写

command.Parameters.Add(new SqlParameter("@MOStatus", 0));

就会抛出异常,过程或函数 'MOQueue_Create' 需要参数 '@MOStatus',但未提供该参数。

而实际上你已经提供了该参数,Debug进来发现command.Parameters["@MOStatus"].Value的值为Null,

原来是因为给该参数的赋值未成功。

但是如果你这样写

SqlParameter mo = new SqlParameter("@MOStatus", SqlDbType.TinyInt);
mo.Value = 0;
command.Parameters.Add(mo);   

则不会有问题。

同时smallint同样有此问题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐