http://msdn.microsoft.com/zh- CN/library/system.data.sqlclient.sqlparametercollection.addwithvalue.aspx
我习惯于使用add()函数将sql参数添加到sqlCommand中。这使我可以指定sqlParameter的类型,但是需要另一行来设置值。
使用AddWithValue函数很好,但是它跳过了“指定参数类型”步骤。
我猜想这会导致参数作为包含在单引号(’‘)中的字符串发送出去,但是我不确定。
是这种情况,这会导致存储过程的性能大大降低吗?
注意:我了解通过指定参数的数据类型来验证.NET方面的用户数据是很好的-我只关心.NET或SQL方面的AddWithValue的反射类型开销。
类型推导发生在客户端。在内部SqlParameter,它基本上具有位切换语句,以确定您指定的值所对应的SQL类型。因此,发送到SQL Server的内容没有什么区别,但是确定.NET类型对应的SQL类型的开销很小。在宏伟的方案中,性能成本甚至不会像在数据库调用中实际花费的时间那样短暂地显示出来。
SqlParameter
您仍然可以在指定SQL类型的同时一行执行此操作:
cmd.Parameters.Add("@something", SqlDbType.NVarChar).Value = someString;