I just want to know why we use "@" while inserting or updating or deleting data in sql table, as I used @name like below.
cmd.Parameters.Add(new SqlParameter("@fname", txtfname.Text));
I just want to know why we use "@" while inserting or updating or deleting data in sql table, as I used @name like below.
cmd.Parameters.Add(new SqlParameter("@fname", txtfname.Text));
请参阅:SqlParameter.ParameterName 属性 - MSDN
ParameterName 以@paramname的形式指定。您必须在执行依赖参数的 SqlCommand 之前设置 ParameterName。
@
由 使用,SqlCommand
以便可以在命令文本中区分参数的值
SqlCommand cmd = new SqlCommand("Select * from yourTable where ID = @ID", conn);
^^^^^^^
//This identifies the parameter
如果@
未提供参数名称,则添加它。看下面的源代码,(取自这里)
internal string ParameterNameFixed {
get {
string parameterName = ParameterName;
if ((0 < parameterName.Length) && ('@' != parameterName[0])) {
parameterName = "@" + parameterName;
}
Debug.Assert(parameterName.Length <= TdsEnums.MAX_PARAMETER_NAME_LENGTH, "parameter name too long");
return parameterName;
}
}
编辑:
如果您不使用@
带有参数的符号,请考虑以下情况。
using (SqlConnection conn = new SqlConnection(connectionString))
{
using (SqlCommand cmd = new SqlCommand())
{
conn.Open();
cmd.CommandText = "SELECT * from yourTable WHERE ID = ID";
cmd.Connection = conn;
cmd.Parameters.AddWithValue("ID", 1);
DataTable dt = new DataTable();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(dt);
}
}
上面将获取所有记录,因为这将转换为SELECT * from yourTable WHERE 1=1
,如果您使用@
上面的参数ID
,您将只获得针对的记录ID =1
好的,对我面前的海报没有冒犯,但我会尽量简单地向你解释,所以即使是 7 岁的孩子也能理解。:)
根据我的经验,当您“只是不清楚将使用什么确切的数据类型或确切的名称”时,会使用.SQL中的“ @ ” 。“稍后”您指出“@”的确切值是什么。
比如说,有人开发了一些巨大的 .SQL 查询,其中包含例如收到它的每个人的姓名。
SELECT column_name,column_name FROM table_name WHERE column_name = @YOURNAME;
@YOURNAME = 'John Doe';
因此,在这种情况下,每个人都更容易在 @YOURNAME 处写下他们的名字,它会自动将查询转换为(在启动时):
SELECT column_name,column_name FROM table_name WHERE column_name = 'John Doe';
PS:我很抱歉我的语法错误和不正确的术语,但我相信你现在应该已经理解了。:)
SQL Server 中的变量和参数以@ 字符开头。
例子:
create procedure Something
@Id int,
@Name varchar(100)
as
...
当您在 C# 代码中创建参数对象以与数据库进行通信时,您还可以使用 @ 字符指定参数名称。
(SqlParameter 对象中有一个未记录的功能,如果您不指定,它会将@ 添加到参数名称。)