【发布时间】:2011-07-14 22:36:54
【问题描述】:
我必须使用存储过程将电话号码插入数据库。但在插入时显示错误
SqlException:转换数据时出错 输入 bigint 到 int。
long phoneNumber = Convert.ToInt64(Phone.Text);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@phone",phoneNumber);
cmd.ExecuteNonQuery();
ie 对于这个参数, DBType 是 Int64 SQLDbType 是 BigInt
我也在 SQL Server 中使用 BigInt 作为列的 DataType。
那么这里可能出了什么问题..
我发现 1999999999 [2^32] 没有插入
如果您需要更多信息,请告知
提前致谢
【问题讨论】:
-
为什么不使用 varchar ?还是字符?
-
电话号码无论如何都应该存储为字符串以保留前导零,但是您可以发布您的插入语句吗?还有桌上的触发器吗?
-
SProc中@phone的定义是什么,bigint?
-
SQL 列的数据类型以前是
int吗?你最近改成bigint了吗?您是否在应用程序运行时进行了更改? -
@Richard.. 那是 Int.. 这就是问题所在。将其更改为 bigint 并且它工作得很好。但是我计划将它存储为字符串作为 @martin ,@malinois 说这是一个更好的做法。如果你可以发布你的解决方案作为答案,我可以接受它。谢谢。 .
标签: .net sql sql-server sql-server-2005 exception