参数名称前面的@有什么作用?

ban*_*daa 6 c# sql visual-studio winforms

@在参数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();
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 7

这就是表明它查询中的参数名称 - 而不是尝试使用列中的字段.

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


Ica*_*rus 5

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

.AddWithValue("ParaName",value);
Run Code Online (Sandbox Code Playgroud)

要么

.AddWithValue("@ParaName",value);
Run Code Online (Sandbox Code Playgroud)

它们都将匹配@ParamNameDB侧命名的参数.所以这不是必需的.

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