我想知道以下两者之间的区别:
DBCmd.Parameters.Add("user_name", IfxType.VarChar);
DBCmd.Parameters["user_name"].Value = p_u;
并且。
DBCmd.Parameters.Add("user_name", p_u);
这里有什么最佳实践,哪个更安全,它们之间是否有性能差异?
我想知道以下两者之间的区别:
DBCmd.Parameters.Add("user_name", IfxType.VarChar);
DBCmd.Parameters["user_name"].Value = p_u;
DBCmd.Parameters.Add("user_name", p_u);
IfxType.VarChar
- 这可能很重要,具体取决于情况和IFX默认字符串作为 Char
、VarChar
或 LongVarChar
。老实说,我不知道它会默认选择哪个。
明确表达通常是一个好主意,但没有必要通过索引器重新获取,因为新参数从 Add
返回;我可能会建议:
DBCmd.Parameters.Add("user_name", IfxType.VarChar).Value = p_u;
或许是:
DBCmd.Parameters.Add("user_name", IfxType.VarChar, 20).Value = p_u;
其中20
是参数的大小。
.Add(...).Value = p_u;
来避免。 - Marc Gravellp_u
是一个 string
类型 - 字符串永远不会装箱(它们是引用类型)。 - Marc GravellParameters.Add
添加值已经被弃用了 - 它已被AddWithValue
替代。SqlParameterCollection.Add(string,object)
已被弃用 - 但这并不是指的SqlParameterCollection
。实际上,我更喜欢使用CreateParameter
,因为我主要针对抽象连接/命令接口编码,它们都没有这两个方法。此外,我推荐的重载.Add(name, type)
即使在SqlParameterCollection
上也没有被弃用。 - Marc Gravell