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同样有此问题。
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同样有此问题。
相关文章推荐
- [哭]使用Data Access 2 插入Ntext类型数据时SqlParameter不指定类型的问题 , ,请为我解惑
- 【Transact-SQL】SQL Server自动把left join自动转化为inner join、以及关联时的数据重复问题
- 【Transact-SQL】SQL Server自动把left join自动转化为inner join、以及关联时的数据重复问题
- 【JavaScript基础】在写冒泡排序时遇到的JavaScript基础问题:JavaScript的数据类型和变量赋值时的原理
- Sql Server 2005 与Sql Server Mobile(Sql server 2005 mobile Edition)数据同步步骤以及问题解决方案
- 获取sql server数据库中所有用户表名及在sql server中怎样用sql得到库中所有的表名以及表的结构(列名和数据类型)
- Sql Server 2005 与Sql Server Mobile(Sql server 2005 mobile Edition)数据同步步骤以及问题解决方案
- ArcSDE 10 for Microsoft SQL Server 2008安装以及导入数据遇到的问题总结
- 获取sql server数据库中所有用户表名及在sql server中怎样用sql得到库中所有的表名以及表的结构(列名和数据类型)
- ArcSDE 10 for Microsoft SQL Server 2008安装以及导入数据遇到的问题总结
- 关于Entity Framework更新的几种方式以及可能遇到的问题(附加类型“Model”的实体失败,因为相同类型的其他实体已具有相同的主键值)在使用 "Attach" 方法或者将实体的状态设置为 "Unchanged" 或 "Modified" 时如果图形中的任何实体具有冲突键值,则可能会发生上述行为
- 数据库sql server安装使用遇到的问题以及解决方法
- Hibernate多条件查询以及与java+sql 之间数据类型转换关系
- 10月14日遇到的问题 在将 nvarchar 值 转换成数据类型 int 时失败。
- 问题解决:SqlParameterCollection只接受非空的SqlParameter类型对象,不接受SqlParameter[]对象
- sql sever 2014 和 navicat 工具之间 sql server导出数据 sql文件 数据传输问题
- 从excel表导入数据到sql server 2005数据库遇到的问题
- Powerbuilder数据类型和SQL Server数据类型兼容问题
- 使用CURL断点续传时遇到的数据类型问题
- elasticsearch与mongodb分布式集群环境下数据同步以及遇到的相应问题解答