与Parameters.Add和Parameters.AddWithValue的区别
基本上Commands
有Parameters
和参数具有像Add
, AddWithValue
等function。在我看到的所有教程中,我通常注意到,他们正在使用Add
而不是AddWithValue
。
.Parameters.Add("@ID", SqlDbType.Int)
VS
.Parameters.AddWithValue("@ID", 1)
有没有原因不使用AddWithValue
? 我宁愿使用它
Parameters.Add("@ID", SqlDbType.Int, 4).Value = 1
因为它节省了我的编码时间。 那哪个更好用? 哪个安全使用? 它提高了性能吗?
使用Add()
方法,您可以通过指定数据的types和长度来限制用户input – 特别是对于varchar
列。
.Parameters.Add("@name",SqlDbType.VarChar,30).Value=varName;
在AddWithValue() (隐式转换值)方法的情况下,它将nvarchar值发送到数据库。
我相信也有一些利用AddWithValue来影响SQL Cache Excection Plan,参见参数长度部分
我会使用正常情况下的AddWithValue。 只有当你的列types与.net转换CLRtypes的方式不同时才使用Add(name,dbtype …)。