为什么我们使用"@"在SQL表中插入、更新或删除数据时

本文关键字:quot 更新 插入 数据 删除 SQL 我们 为什么 | 更新日期: 2023-09-27 18:14:07

我只是想知道为什么我们在插入或更新或删除sql表中的数据时使用"@",就像我下面使用@name一样。

 cmd.Parameters.Add(new SqlParameter("@fname", txtfname.Text));

为什么我们使用"@"在SQL表中插入、更新或删除数据时

参见:SqlParameter。参数名称属性- 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';

p。S:我很抱歉我的语法错误和不正确的术语,但我相信你现在应该已经理解了。:)

SQL Server中的变量和参数前面都有@字符。

的例子:

create procedure Something
  @Id int,
  @Name varchar(100)
as
...

当您在c#代码中创建参数对象以与数据库通信时,您还可以使用@字符指定参数名称。

(SqlParameter对象中有一个未记录的特性,如果您没有指定它,它会在参数名称中添加@)