2011-06-14 143 views
11

可能重複:
What is the maximum value for a int32?值是太大或太小,一個Int32

Mobileno = Convert.ToInt32(txmobileno.Text); 

錯誤我AMM獲得,同時插入到數據庫

+1

http://stackoverflow.com/questions/94591/what-is-the-maximum-value-for-a-int32 – Ruben 2011-06-14 07:49:50

+0

什麼是數據庫表中的確切數據類型? – 2011-06-14 07:51:24

+0

您需要檢查您的數據庫表中的數據類型。 – 2011-06-14 07:51:59

回答

9

integer (Int32)在它可以存儲的值中受到限制,因爲它「僅」使用32位。它可以存儲2,147,483,647和-2,147,483,648之間的值。 (More information on MSDN

txmobileno.Text表示的值太大或太小。

看名字txmobileno可能是一個手機號碼。這種數字在int32中的位數太多。另外一個電話號碼往往以0或00或+(國際)開頭。沒有辦法將這種信息存儲在整數(或其他數字類型)中。只需將它們存儲在string

+1

另一方面,我在美國的狀態下的電話號碼通常運行503-nnn-nnnn或541-nnn-nnnn,這意味着_I_可以不會被寫得不好的自動撥號程序所困擾,因爲它假設一個整數可以容納任何電話號碼。 :) – sarnold 2011-06-14 09:05:25

46

爲什麼你會使用任何類型的整數來存儲電話號碼?

你不能有意義地做任何一個算術,你失去所有前導零。

改爲使用字符串。

4

正如其他人指出的,將電話號碼存儲爲整數是錯誤的。

  • 你失去了存儲字符和空格的能力,例如國家代碼 - 「+44(0800)12345」。
  • 把它作爲一個整數存儲是沒有邏輯的理由 - 你是否需要對兩個電話號碼進行算術運算?將兩個電話號碼一起添加是否有意義?
  • 前導零將丟失 - (0800 12345)將變爲(80)。
  • 將其存儲爲字符串可以讓您對用戶輸入進行正則表達式驗證。

說了這麼多,原來的問題確實提出,應使一些要點:

  • 身高Int32.TryParse代替Convert.ToInt32當源值是一個字符串。
  • 當處理可能溢出的值時 - 將代碼放在選中的{...}塊中。
相關問題