【发布时间】:2017-06-08 21:23:21
【问题描述】:
我正在尝试将Mobile Number 添加到我的 10 位列中
但它给了我错误
值对于 Int32 来说太大或太小
这里是代码
drpartyInfo[0]["MOB_NUM"] = string.IsNullOrWhiteSpace(e.Record["MOB_NUM"].ToString())
? DBNull.Value : (object)Convert.ToInt32(e.Record["MOB_NUM"].ToString());
【问题讨论】:
-
只是为了更清楚地了解此处给出的所有答案。如果您知道值的上限/下限,则应选择适合的最小二进制数据类型(
short、ushort、int、uint、long、ulong)。数据库 LOVE 那些类型,它们占用固定数量的字节并且可以更容易地排序/索引。string(varchar) 不太容易处理,因此根据经验,如果可以,请避免使用string。另一方面,如果您的表中少于~1000 万行,则几乎不会注意到差异。这只是一个旁注,并不意味着是一个答案。 -
@pid:那么根据你的说法,手机号码适合哪种数据类型?
-
10位表示下限为0,上限为9,999,999,999。这适合
long(Int64)。任何数字n都适合log2(n) + 1位。将该数字增加到 8、16、32、64,您需要的类型最少。 -
您不想将电话号码存储为号码,除非您单独存储前缀(地区、国家代码)。
-
等等!如果
MOB_NUM是电话号码,则根本不要使用整数。它确实是一个code,它必须存储在一个字符串中,而不是一个quantity!我的错,我住的地方我们不说手机号码,而只是说电话号码。前导0不能存储为任何类型的整数!使用字符串!!!