Sql server 数据类型tinyint的算术溢出错误,值=256

Sql server 数据类型tinyint的算术溢出错误,值=256,sql-server,Sql Server,字节数=1; 添加(编号); //表格.cs public static int Add( byte? order) { arParams[0] = new SqlParameter("@number", (number.HasValue) ? ((object)number) : DBNull.Value); // stored procedure call is made which takes paramaters, } 存储过程如下所示 @number tinyint AS

字节数=1; 添加(编号); //表格.cs

public static int Add( byte? order)
{
  arParams[0] = new SqlParameter("@number", (number.HasValue) ? ((object)number) : DBNull.Value);
  // stored procedure call is made which takes paramaters, 
}
存储过程如下所示

@number tinyint
AS
BEGIN
IF @number IS NOT NULL
BEGIN
  UPDATE 
    table1
  SET 
    number = number + 1
  WHERE 
    id=13
END
INSERT INTO 
 table1
(
  number
)
VALUES 
( 
  number=@number
)

///////为什么我会出现这个错误,请任何人举例说明,我该如何解决这个问题。tinyint的范围是0-255

您试图将256放入一个不知道256是什么的数据类型中


锡的范围是0-255

您试图将256放入一个不知道256是什么的数据类型中



这是因为无法将值设置为大于255且小于0。因此,您应该在将其发送到数据库之前应用验证。

这是因为您无法将值设置为大于255且小于0。所以您应该在将其发送到数据库之前应用验证。

感谢您的快速回复,因为我不知道它是如何发生的。首先,StoredProcess中@number的值是多少?设置number=number+1后的值是多少?您可以在将其发送到数据库之前应用验证。在0和255之间都是包含的。在codebehind中,我在哪里可以这样做?我仍然在寻找这个问题的答案,我有number=1,它作为(对象)编号传递给storedprocedure,在storedprocedure中@number的值会是255吗?根据您发布的代码,您的更新查询根本没有使用@number参数。你检查过表1中的“数字”字段了吗?是的,我知道了,如果我在更新中使用@number,它能解决我的问题吗?谢谢你的快速回复,因为我不知道它是怎么发生的。首先,StoredProcess中@number的值是多少?设置number=number+1后的值是多少?您可以在将其发送到数据库之前应用验证。在0和255之间都是包含的。在codebehind中,我在哪里可以这样做?我仍然在寻找这个问题的答案,我有number=1,它作为(对象)编号传递给storedprocedure,在storedprocedure中@number的值会是255吗?根据您发布的代码,您的更新查询根本没有使用@number参数。你检查了表1中的“数字”字段了吗?是的,我知道了,如果我在更新中使用@number,它能解决我的问题吗。谢谢,我在哪里通过255,它被设置为256。我不确定(对象)编号传递给StoredProcess的是什么?@number是255,这是因为您的存储过程在递增。数字=数字+1。如果值已经是255,则保留255,或者您可以将datatytpe更改为intok,因此这意味着在(对象)编号之后,我尝试将其分配给tinyint@number的值将是255。1 byte=255 int是吗?您也应该在这里更改数据类型。现在这意味着什么,(感谢您的耐心和支持)谢谢,我在哪里传递255并将其设置为256。我不确定(对象)编号传递给StoredProcess的是什么?@number是255,这是因为您的存储过程在递增。数字=数字+1。如果值已经是255,则保留255,或者您可以将datatytpe更改为intok,因此这意味着在(对象)编号之后,我尝试将其分配给tinyint@number的值将是255。1 byte=255 int是吗?您也应该在这里更改数据类型。这意味着什么,(感谢您的耐心和支持)