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


    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同样有此问题。

  • 相关阅读:
    【Beta】Scrum Meeting 8
    【Beta】Scrum Meeting 7
    【Beta】Scrum Meeting 6
    【Beta】Scrum Meeting 5
    【Beta】Scrum Meeting 4
    【Beta】Scrum Meeting 3
    “北航Clubs”项目汇报
    Alpha阶段展示报告
    Alpha阶段产品功能说明
    Alpha阶段个人贡献分
  • 原文地址:https://www.cnblogs.com/philzhou/p/1933636.html
Copyright © 2020-2023  润新知