Int32的值太大或太小
可能重复:
int32的最大值是多少?
Mobileno = Convert.ToInt32(txmobileno.Text);
我插入数据库时遇到的错误
为什么你会使用任何类型的整数来存储电话号码?
你不能在其中有意义地做任何算术,你就会失去所有领先的零。
请改用字符串。
integer
(Int32)在其可以存储的值中受到限制,因为它“仅”使用32位。 它可以存储2,147,483,647和-2,147,483,648之间的值。 ( 有关MSDN的更多信息 )
txmobileno.Text
表示的值太大或太小。
查看名称txmobileno
可能是一个手机号码。 这种数字有太多的数字存储在int32
。 电话号码往往以0或00或+(国际)开头。 无法以整数(或其他数字类型)存储此类信息。 将它们存储在一个string
。
正如其他人所指出的那样,将电话号码存储为整数是一个错误。
- 您将无法存储字符和空格,例如国家/地区代码 – “+44(0800)12345”。
- 将它存储为整数没有逻辑上的理由 – 您是否需要对两个电话号码进行算术运算? 将两个电话号码加在一起是否有意义?
- 领先的零将丢失 – (0800 12345)将成为(80012345)。
- 将其存储为字符串允许您对用户输入进行正则表达式validation。
话虽如此,原来的问题确实提出了一些应该提出的观点:
- 当源值是字符串时,首选Int32.TryParse而不是Convert.ToInt32。
- 处理可能会溢出的值时 – 将代码括在已检查的{…}块中。