我想补充Mobile Number
到我的专栏是10位值是太大或太小,一个Int32错误
,但它给我的错误作为
值要么太大或过小为一个Int32
下面是代码
drpartyInfo[0]["MOB_NUM"] = string.IsNullOrWhiteSpace(e.Record["MOB_NUM"].ToString())
? DBNull.Value : (object)Convert.ToInt32(e.Record["MOB_NUM"].ToString());
我想补充Mobile Number
到我的专栏是10位值是太大或太小,一个Int32错误
,但它给我的错误作为
值要么太大或过小为一个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
数据类型。
你在'ulong'上失踪。 0-18十亿分之一。 – pid
谢谢@pid我正在更新:P –
Int32.MaxValue
是2,147,483,647
。
如果手机号码是10位数字,则有79%的机会不适合Int32。尝试和Int64(或UInt64)来代替。
如果您的号码是不是更大2147483647,它不能被存储到一个INT32,用细绳或使用的Int64,我怀疑你的电话号码是大于9223372036854775807
只是为了就有点更清楚所有这里给出的答案。如果你已经知道了值的上下限,你应该选择适合的最小二进制数据类型('short','ushort','int','uint','long','ulong')。数据库* LOVE *这些类型,它们占用固定数量的字节,并且可以更容易地进行排序/索引。 'string'('varchar')不容易处理,所以如果可以的话,根据经验法则避免使用'string'。另一方面,如果你在表格中有*少于1000万行*,那么差异将几乎不明显。这只是一个附注,并不意味着是一个答案。 – pid
@pid:所以根据你哪个数据类型适合在这里的手机号码? – BNN
10位表示下限为0,上限为9,999,999,999。这符合'长'('Int64')。无论哪个数字'n'都适合'log2(n)+ 1'位。将该数字提高到8,16,32,64,并且您的类型最少。 – pid