在参数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();
}
答案 0 :(得分:7)
这就是表明 是查询中的参数名称 - 而不是尝试使用列中的字段。
在构造SqlParameter
对象时是否严格需要它尚不清楚,但我认为保持一致是有意义的。)
答案 1 :(得分:5)
与其他人在此处所说的相反,@
角色本身并没有做任何事情。您可以使用
.AddWithValue("ParaName",value);
或
.AddWithValue("@ParaName",value);
并且它们都将匹配数据库端名为@ParamName
的参数。所以这不是必需的。
话虽如此,总是在参数前面使用@
是一种非常标准的做法,因为这正是它在数据库方面的命名方式。
答案 2 :(得分:1)
没什么神奇的 - 它只是SQL用来表示参数和局部变量的语法。它与C#@
字符不同,它告诉编译器不要在字符串文字中处理转义序列:
string stringWithSlashes = @"Use '\n' to add a new line";
或者允许您使用保留字作为变量名称:
string @class = "Geometry";
答案 3 :(得分:0)
@
表示它是一个输入/输出参数,其值可以从脚本外部传递。
答案 4 :(得分:0)
@
符号表示SqlParameterCollection
参数名称。使用列中的字段。
Parameters
parameterName
Type: System.String
The name of the parameter.
答案 5 :(得分:0)
在这种情况下,@是SQL Server构造。 SQL Server查询的参数使用@符号指定,因为T-SQL(SQL Server编程语言)使用@符号表示变量。