在 SqlCommand.Parameter.Add() 方法中,length Parameter 是必需的,或者不是必
本文关键字:Parameter 或者 length Add SqlCommand 方法 | 更新日期: 2023-09-27 18:34:49
cmd.Parameters.Add("@blah", SqlDbType.VarChar).Value = blah;
在此代码中参数的长度是强制性的还是强制性的?
另外,如果我们在此方法中不使用长度参数,则会发生任何性能或SQL注入相关问题?
请建议我谢谢
在此代码中参数长度是强制性的还是强制性的?
我不认为这是强制性的。但是,当您澄清它时,这将是一个很好的做法。 SqlParameterCollection.Add(String, SqlDbType)
将SqlDbType
作为第二个参数,并且不需要参数的长度。只是一个提示;如果您的列是 varchar(max)
,则应使用 VarChar
作为数据库类型。
如果我们在此方法中没有使用长度参数,则任何 是否发生了性能或SQL注入相关问题?
性能问题看起来无关紧要,因为长度不是必须的。由于您在查询中使用参数化 sql,因此不必担心 SQL 注入攻击。
由于它作为参数传递,我认为在注入方面不会出现任何问题。关于长度,如果您使用 varchar(max)
,这将导致性能问题,因为它在内部将该类型保留为文本。
参数时不需要使用 lengh
如果省略长度参数,则会创建具有数据大小的参数
cmd.Parameters.Add("@blah", SqlDbType.VarChar).Value = "this is 22 chars long.";
它创建一个类型为 VarChar(22)
的参数。sql server 可能会在执行任何工作之前使用该参数信息来查看数据是否适合该列(我会这样做(。