我在SQL Server表中插入了一些值。当我从前端获取值时,它们就是字符串。所以我需要先将它们转换为int
,然后才能将它们插入到表中。
我正在使用此代码:
Int64 x = Convert.ToInt64(some string value);
我希望将x
插入表格中,插入numeric(18,0)
类型的列中。
执行此转换时,我收到错误
无法将参数值从int64转换为int32
虽然我的所有值都是1000左右。
答案 0 :(得分:4)
使用int x = Convert.ToInt32(some string value)
,它应该有效。
您的数据库需要类型为Int32
的值。 SQL服务器不会将64位数字隐式转换为32位数字,因为可能会丢失信息。
答案 1 :(得分:2)
Int64
范围从−9,223,372,036,854,775,808
到9,223,372,036,854,775,807
,正如您所看到的那样,长度为19个字符(不包括逗号),因此它不适合您的数字范围18。如果您真的想对{1000这样的小数字使用Int64
,则应将列修改为数据类型bigint
。
答案 2 :(得分:0)
对于sql server端的System.Int64(long),必须使用bigint数据类型。 http://msdn.microsoft.com/en-us/library/ms187745.aspx