提问人:YAKOVM 提问时间:1/14/2014 更新时间:6/19/2020 访问量:115209
SqlCommand 参数 Add 与 AddWithValue [duplicate]
SqlCommand Parameters Add vs. AddWithValue [duplicate]
问:
我应该什么时候使用?
在以下 MSDN 示例中,他们使用 for 和 forParameters. Add/AddWithValue
Parameters.Add
int
Parameters.AddWithValue
string
command.Parameters.Add("@ID", SqlDbType.Int);
command.Parameters["@ID"].Value = customerID;
command.Parameters.AddWithValue("@demographics", demoXml);
什么用途最好datetime
答:
49赞
Tim Schmelter
1/14/2014
#1
如果您想通过更多的工作使所有内容变得明确,请使用。如果你懒惰,请使用。 将派生其值的参数类型,因此请确保其类型正确。例如,如果 to 是正确的类型,则应将其解析为。Add
AddWithValue
AddWithValue
string
int
有一个原因需要避免:如果你的参数类型是,你必须小心采用参数名称和对象的重载,因为这样就会使用 SqlDbType-enum
选择另一个重载。Add
int
从备注(方法重载甚至现在):obsolete
使用该方法的此重载来指定整数参数值时要小心。 由于此重载采用 Object 类型的值,因此必须将 当值为零时,对象类型的整数值 ...如果不执行此转换, 编译器假定您正在尝试调用重载。
SqlParameterCollection.Add
SqlParameterCollection.Add(string, SqlDbType)
评论
0赞
Rahul Nikate
5/21/2015
cmd.Parameters.Add
现已弃用。请改用 cmd.Parameters.AddWithValue
7赞
Tim Schmelter
5/21/2015
@RahulNikate: 也不是最好的方法,因为它从参数值推断参数的类型。这通常会导致糟糕的执行计划或不正确的转换。它也不会首先验证参数(例如,键入 if 但传递 a )。Only 已弃用所有其他 not 的重载。我更喜欢采用参数名称和 (考虑指定字符串类型的大小)的那个。AddWithValue
Datetime
String
Add(String parameterName, Object value)
Add
SqlDbType
2赞
Tim Schmelter
5/21/2015
AddWithValue
只是避免了我的回答中提到的问题,并具有与 .Add(string, object)
3赞
Gerard ONeill
10/7/2015
我不同意 Add 比 AddWithValue 更好——它们都可能犯错误——所以使用哪个更简单。Add 可用于提前设置参数,以便您只需指定对象。另外,这个.几乎和 AddWithValue 一样短。Parameters.Add("@BEGDATE", SqlDbType.DateTime).Value = myDate
11赞
Bacon Bits
8/24/2017
请注意,cmd.Parameters.Add(String, SqlDbType)
未弃用。仅 cmd.Parameters.Add(String, Object)
已弃用(现已过时)。
上一个:反转图例的顺序
评论
cmd.Parameters.Add
现已弃用。请改用cmd.Parameters.AddWithValue