Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.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# SqlCommand如何处理整数类型的参数?_C#_Sql_.net_Sqlparameter - Fatal编程技术网

C# SqlCommand如何处理整数类型的参数?

C# SqlCommand如何处理整数类型的参数?,c#,sql,.net,sqlparameter,C#,Sql,.net,Sqlparameter,如果我有这个变量: int value = 4; 它将作为某个sql参数传递: SqlCommand sqlcmd = new SqlCommand(); sqlcmd.Parameters.Add(new SqlParameter("@value", value)); 它会被转换成字符串并自动处理吗?或者可能会引起一些麻烦?当我这样做的时候: sqlcmd.ExecuteNonQuery() 始终提供正确的类型,尤其是int是危险的 发件人: 使用SqlParameter构造函数的此重载时

如果我有这个变量:

int value = 4;
它将作为某个sql参数传递:

SqlCommand sqlcmd = new SqlCommand();
sqlcmd.Parameters.Add(new SqlParameter("@value", value));
它会被转换成字符串并自动处理吗?或者可能会引起一些麻烦?当我这样做的时候:


sqlcmd.ExecuteNonQuery()

始终提供正确的类型,尤其是
int
是危险的

发件人:

使用
SqlParameter
构造函数的此重载时请小心 指定
整数
参数值。因为这个过载需要一段时间 对象类型的值,必须将整数值转换为对象 当值为零时键入,如下C#示例所示:

如果不执行此转换,编译器将假定 正在尝试调用
SqlParameter(string,SqlDbType)
构造函数 超载

因此,如果要使用字符串参数,请将其转换为正确的类型:

sqlcmd.Parameters.Add(new SqlParameter("@value", value.ToString()));

或(与类型一起)


始终提供正确的类型。好的,将提供正确的类型,只是好奇的想法。例如`var parameter=new SqlParameter{ParameterName=“@value”,SqlDbType=SqlDbType.Int,Direction=ParameterDirection.Input,value=value}`不,它不会转换为字符串!相反,参数化查询(包括其参数、定义和值)将发送到SQL Server,SQL Server将处理将参数值映射到查询执行的详细信息。很好,我将更加关注文档,而不是直接跳到那里:)是的,我通常使用ToString()…但是很高兴知道sqlparameters如何处理整数类型。
sqlcmd.Parameters.Add(new SqlParameter("@value", value.ToString()));
sqlcmd.Parameters.AddWithValue("@value", value.ToString());
var p = new SqlParameter("@value", typeof(string));
p.Value = value.ToString()
sqlcmd.Parameters.Add(p);