代码之家  ›  专栏  ›  技术社区  ›  Keng

ASP.NET中存储过程中的默认整数类型

  •  0
  • Keng  · 技术社区  · 16 年前

    我有一个网页,我已经连接到 stored procedure . 在这个SQL数据源中,我有一个参数要传递回int类型的存储过程。

    ASP.NET int32 ,但数字不会超过6。覆盖ASP.NET默认值并输入16行吗?或者将来会有冲突吗?

    规格:数据库字段的长度为4,精度为10,如果这对答案有影响的话。

    6 回复  |  直到 11 年前
        1
  •  1
  •   David Basarab    16 年前

    例如,如果强制将其设置为一个字节,并且数字超过255,则可能会发生强制转换错误(并引发异常)。然而,如果你知道它不会高于6,这应该不是一个问题。

    如果是我的话,我会把它当作一个普通的int,我不确定你会通过把它变成一个字节来节省多少,除了几个字节。抛出异常的风险太高,如果将其缩小,您将失去所有好处。

        2
  •  1
  •   shsteimer    16 年前

    坚持使用int32。不管怎样,这就是vb的“整数”和SQL的INT。

    如果使用tinyint/byte或short/int16而不是int/int32,则不会获得任何显著的性能改进。

    事实上,你将来可能会遇到的麻烦是,你可能需要对那些期望int32s的对象进行所有的强制转换,这会让你发疯。

        3
  •  1
  •   Community CDub    8 年前

    当您说DB字段的长度为4时,这意味着4个字节,相当于Int32(4字节=32位)。这就是为什么要将列作为int32返回的原因。

    有不同的 integer datatypes 在SQL Server中——如果您确定该数字不会超过6,则应将数据库中的列声明为“tinyint”,它使用单个字节,可以保存0到255之间的值。然后,SQL数据源应该将其转换为“byte”数据类型,这对于您的目的来说很好。

    CLR“byte”==SQL“tinyint”(1字节) CLR“Short”(或int16)=SQL“smallint”(2字节) CLR“int32”==SQL“int”

    编辑:仅仅因为你能做一些事情,并不意味着你应该——我同意 Michael Haren ,管理这些不太常见的数据类型所带来的开发难题超过了您将获得的微小性能增益,除非您正在处理非常高性能的软件(在这种情况下,您为什么要使用ASP.NET?)

        4
  •  1
  •   Joel Coehoorn    16 年前

    在ASP端使用Int16不会节省很多钱。它最终还是必须将其加载到32位寄存器中。

        5
  •  1
  •   FlySwat    16 年前

    仅供参考,CLR在内部将int映射到Int32。

        6
  •  1
  •   Peter Mortensen icecrime    12 年前

    SQL Server 已定义存储过程。如果它是一个 int int16 .

    否则,SQLServer只会自动进行上转换,如果需要进行下转换,则会抛出一个错误。