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);