使用c#和SQL Server将整型转换为数据类型数值时发生算术溢出错误

本文关键字:错误 溢出 数据类型 SQL Server 转换 整型 使用 | 更新日期: 2023-09-27 18:17:07

我正在开发一个web应用程序,我正在调用存储过程,使用下面的代码插入语句

SqlConnection conn = new SqlConnection(connstr);
conn.Open();
SqlCommand command = new SqlCommand();
command.Connection = conn;
command.CommandType = CommandType.StoredProcedure;
command.CommandText = "StoredProc1";
SqlDataAdapter adapter = new SqlDataAdapter();
SqlParameter parm = new SqlParameter("@ReturnValue", SqlDbType.Int);
parm.Direction = ParameterDirection.ReturnValue;
command.Parameters.Add(parm);
command.Parameters.Add(new SqlParameter("@A", SqlDbType.BigInt)).Value = gui.A;
command.Parameters.Add(new SqlParameter("@B", SqlDbType.Int)).Value = gui.B;
command.Parameters.Add(new SqlParameter("@C", SqlDbType.Decimal)).Value = gui.C;
command.Parameters.Add(new SqlParameter("@D", SqlDbType.Float)).Value = gui.D;
command.Parameters.Add(new SqlParameter("@E", SqlDbType.Float)).Value = gui.E;
command.Parameters.Add(new SqlParameter("@F", SqlDbType.NVarChar)).Value = gui.F;
command.ExecuteNonQuery();
conn.Close();
returnValue = Convert.ToInt32(parm.Value);

但是我得到一个错误

将整型转换为数字数据类型时发生算术溢出错误

ExecuteNonQuery()行。我能知道我错过了什么吗?

谢谢Anjanaa

使用c#和SQL Server将整型转换为数据类型数值时发生算术溢出错误

实际问题并不完全在。net:

  1. 检查存储过程,看看是否有任何计算值可能超过特定类型的大小(即数据类型int的列可能被计算为等于数据类型bigint的大小)。将包含该信息的药剂应具有相同的数据类型(即,如果该信息包含在临时表中,则临时表应包含该大小的列以包含该数据,如果使用变量,则变量应具有可能包含该数据的大小,等等)

  2. 包含该数据的属性/字段/变量应该具有类似的数据类型(即smallint - sql = short - net等)