2011-06-09 1198 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

相關問題