“无法将参数值从int64转换为int32”

时间:2012-10-23 07:26:13

标签: c# sql-server

我在SQL Server表中插入了一些值。当我从前端获取值时,它们就是字符串。所以我需要先将它们转换为int,然后才能将它们插入到表中。

我正在使用此代码:

Int64 x = Convert.ToInt64(some string value);

我希望将x插入表格中,插入numeric(18,0)类型的列中。

执行此转换时,我收到错误

  

无法将参数值从int64转换为int32

虽然我的所有值都是1000左右。

3 个答案:

答案 0 :(得分:4)

使用int x = Convert.ToInt32(some string value),它应该有效。

您的数据库需要类型为Int32的值。 SQL服务器不会将64位数字隐式转换为32位数字,因为可能会丢失信息。

答案 1 :(得分:2)

Int64范围从−9,223,372,036,854,775,8089,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