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。
  • 处理可能会溢出的值时 – 将代码括在已检查的{…}块中。