2011-06-09 38 views
0

字节数= 1; add(number); //形式的.cs数据类型tinyint的算术溢出错误,值= 256

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 
( 
    [email protected] 
) 

///////为什么我收到这个错误可以在任何一个说明,请和我如何解决这个

回答

2

这是因为你不能设置Tinyint价值超过255和低于0,所以你应该把它发送给数据库之前,应用验证。

+0

谢谢,我在哪里通过255,它被设置为256.我不知道什么(对象)号码传递到storedprocedure?以及@number是255的方式 – Tenzin 2011-06-09 11:16:45

+0

这是因为您正在存储过程中增加。 number = number + 1.如果255的值已经保持255,或者你可以改变datatytpe为int – Pankaj 2011-06-09 11:18:04

+0

ok,所以这意味着在(对象)号码之后我试图将它分配给tinyint,@ number的值将是255 。1字节= 255 int是吗? – Tenzin 2011-06-09 11:23:28

3

tinyint的范围是0-255。

您试图将256放入不知道256是什么数据类型。

int, bigint, smalltint and tinyint ranges.

+0

感谢您的快速回复,因为我知道它是如何发生的。首先存储过程中@号的值是多少?set number = number + 1之后的值是多少? – Tenzin 2011-06-09 11:13:07

+0

您可以在将其发送到数据库之前应用验证。对于0到255之间都包含 – Pankaj 2011-06-09 11:14:41

+0

我在哪里可以做codebehind?,我仍然在寻找这个问题的答案,我有number = 1,并将其传递到storedprocedure作为(对象)编号,在storedprocedure将@number的值是255? – Tenzin 2011-06-09 11:19:54

相关问题