我试图在我的列中添加一个手机号码
,它是10位数的。
但是它给了我一个错误:
值对于 Int32 来说过大或过小
这是代码:
drpartyInfo[0]["MOB_NUM"] = string.IsNullOrWhiteSpace(e.Record["MOB_NUM"].ToString())
? DBNull.Value : (object)Convert.ToInt32(e.Record["MOB_NUM"].ToString());
最好使用long
、string
或byte array
。
您可以参考此处内容。
short.MaxValue: 32767
short.MinValue: -32768
ushort.MaxValue: 65535
ushort.MinValue: 0
int.MaxValue: 2,147,483,647
int.MinValue: -2,147,483,648
uint.MaxValue: 4,294,967,295
uint.MinValue: 0
long.MaxValue: 9,223,372,036,854,775,807
long.MinValue: -9,223,372,036,854,775,808
ulong.MaxValue: 18,446,744,073,709,551,615
如果你确定数值始终为正数,可以使用无符号数据类型unsigned
。
手机号码无法存储在int类型中,请将其更改为字符串类型
如果您的数字大于2147483647,它将无法存储到int32中,请使用字符串或使用int64。我怀疑您的数字是否大于9223372036854775807。
Int32.MaxValue
是 2,147,483,647
。
如果手机号码长度为10位,有79%的可能性它不适合 Int32。尝试使用 Int64(或 UInt64)代替。
short
,ushort
,int
,uint
,long
,ulong
)。数据库喜欢这些类型,它们占用固定的字节数,并且可以更容易地进行排序/索引。一个string
(varchar
)不易处理,因此作为经验法则,如果可以的话避免使用string
。另一方面,如果表中的行数少于 ~1000 万行,则差异几乎不会被注意到。这只是一个旁注,不是答案。 - pidlong
(Int64
)。无论数字n
是多少,都可以适应于log2(n) + 1
位。将该数字提升至8、16、32、64,即可得到所需的最小类型。 - pid