Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SqlParameter构造函数整数长度问题_C#_Sql_Sql Server_Sqlparameter - Fatal编程技术网

C# SqlParameter构造函数整数长度问题

C# SqlParameter构造函数整数长度问题,c#,sql,sql-server,sqlparameter,C#,Sql,Sql Server,Sqlparameter,我目前正在调试一个SQL查询,该查询通过C#删除SQL server表中基于多个参数的项。目前,该声明失败 提供的参数之一基于项目的版本ID 此版本ID的SQL参数为: new SqlParameter("@versionId", SqlDbType.Int, 4) 例如,如果查询提供的版本ID为51096,那么它是否会在设置长度为“4”的整数参数上失败?不,它不会失败。即使您在此处输入0,在大小上也会起作用,但如果您的db类型为varchar或nvarchar,则它会将您的值截断为提供的大小

我目前正在调试一个SQL查询,该查询通过C#删除SQL server表中基于多个参数的项。目前,该声明失败

提供的参数之一基于项目的版本ID

此版本ID的SQL参数为:

new SqlParameter("@versionId", SqlDbType.Int, 4)

例如,如果查询提供的版本ID为51096,那么它是否会在设置长度为“4”的整数参数上失败?

不,它不会失败。即使您在此处输入0,在大小上也会起作用,但如果您的db类型为
varchar
nvarchar
,则它会将您的值截断为提供的大小,在本例中为4


如果您的参数值大于int所能容纳的值(
2147483647
),则它将在运行时抛出错误。

@Serpiton。我在一个连接有限的虚拟机上。我目前正在通过视觉进行“调试”,只是在快速排除“是”或“否”之后。你误解了长度的含义。对于固定长度的类型(包括
int
),它完全被忽略。您根本不应该将其传递给
SqlParameter
构造函数。即使它对整数有影响,它仍然意味着四个字节(大约-2G到+2G范围),而不是四个十进制数字。另一方面,如果您使用例如
char
,您将得到四个十进制数字(如果您是这样存储的),但即使这样也不会导致错误-它会截断值。非常好的答案,谢谢。结果是一个不正确的ID。