6

@在参数 SQL 查询前面插入符号有什么作用?

例如:

using (SqlCommand cmd = new SqlCommand("INSERT INTO [User] values (@Forename, @Surname, @Username, @Password)", con))
{
    cmd.Parameters.AddWithValue("@Forename", txtForename.Text);
    cmd.Parameters.AddWithValue("@Surname", txtSurname.Text);
    cmd.Parameters.AddWithValue("@UserName", txtUsername.Text);
    cmd.Parameters.AddWithValue("@Password", txtPassword.Text);

    cmd.ExecuteNonQuery();
}
4

6 回答 6

7

这正是表明它查询中的参数名称的原因——而不是尝试使用列中的字段。

目前尚不清楚在构造对象时是否严格需要它SqlParameter,但我认为保持一致是有意义的:)

于 2013-02-28T18:53:13.463 回答
5

与其他人在这里所说的相反,这个@角色本身并没有做任何事情。您可以添加参数

.AddWithValue("ParaName",value);

或者

.AddWithValue("@ParaName",value);

它们都将与@ParamName数据库端命名的参数匹配。所以它不是必需的。

话虽如此,始终@在参数前面使用 是一种非常标准的做法,因为这正是它在数据库端的命名方式。

于 2013-02-28T19:07:44.230 回答
1

没什么神奇的——这只是 SQL 用来表示参数和局部变量的语法。@它与告诉编译器不要处理字符串文字中的转义序列的 C#字符不同:

string stringWithSlashes = @"Use '\n' to add a new line";

或者允许您使用保留字作为变量名:

string @class = "Geometry";
于 2013-02-28T18:53:09.593 回答
0

@表示它是一个输入/输出参数,其值可以从脚本外部传递。

于 2013-02-28T18:53:18.853 回答
0

@符号表示参数名称。使用列中的字段。SqlParameterCollection

Parameters

parameterName
Type: System.String

The name of the parameter.
于 2013-02-28T18:54:13.483 回答
0

在这种情况下,@ 是 SQL Server 构造。由于 T-SQL(SQL Server 编程语言)使用 @ 符号表示变量,因此 SQL Server 查询的参数使用 @ 符号指定。

于 2013-02-28T18:54:43.657 回答