是否有必要在SqlParameter名称前添加@?

Mah*_* KP 28 .net vb.net ado.net

在我们的一个应用程序中,参数以这种方式传递给存储过程

Dim parm As New SqlParameter("searchText", SqlDbType.VarChar)
parm.Direction = ParameterDirection.Input
parm.Size = 50
parm.Value="test"

cmd.Parameters.Add(parm)
Run Code Online (Sandbox Code Playgroud)

并且该过程包含一个参数as @searchText

即从代码传递的参数名称searchText和存储过程中的参数名称@searchText.

但它工作正常,我总是得到所需的结果.

所以我的问题是这样的,没有必要在参数之前指定@?是否会追加@,任何人都可以为此给出答案.

Hei*_*nzi 30

根据文档,名称必须以@:

ParameterName以@paramname形式指定.

据的源代码(看看SqlCommandSqlParameter.ParameterNameFixed在参考源)中,@如果需要的话被自动添加.

所以是的,它有效,但它是一个无证的功能.最佳实践建议您不要依赖此操作并手动为参数名称添加前缀@.

  • @Heinzi:对你来说有点笑......使用JustDecompile查看`System.Data.SqlClient.SqlParameter`的源代码......有一个名为`ParamaterIsSqlType`的内部属性......看起来像微软的某个人需要一个拼写课:-) (6认同)
  • @mahesh:在我目前的实施中,据我所知,是的.由于它是一个未记录的功能,它可能随时更改(例如,在新的框架版本中),恕不另行通知. (4认同)
  • @mahesh:这是**未记录的**功能.这意味着它没有正式记录.;-) (4认同)