C# 为什么在sql表中插入、更新或删除数据时使用“@”

C# 为什么在sql表中插入、更新或删除数据时使用“@”,c#,sql,sqlparameter,C#,Sql,Sqlparameter,我只是想知道为什么我们在sql表中插入、更新或删除数据时使用@,就像我在下面使用@name一样 cmd.Parameters.Add(new SqlParameter("@fname", txtfname.Text)); 见: ParameterName以@paramname的形式指定。你必须 在执行依赖于的SqlCommand之前设置ParameterName 参数 @由SqlCommand使用,以便在命令文本中区分参数的值 如果未为@提供参数名称,则会添加它。看看下面的源代码 上面的内容

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

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

ParameterName以@paramname的形式指定。你必须 在执行依赖于的SqlCommand之前设置ParameterName 参数

@由SqlCommand使用,以便在命令文本中区分参数的值

如果未为@提供参数名称,则会添加它。看看下面的源代码


上面的内容将获取所有记录,因为这将转换为从表中选择*,其中1=1,如果您使用@over作为参数ID,则只会获取ID=1的记录,SQL Server中的变量和参数前面都有@character

例如:

create procedure Something
  @Id int,
  @Name varchar(100)
as
...
在C代码中创建与数据库通信的参数对象时,还可以使用@字符指定参数名称


SqlParameter对象中有一个未记录的功能,如果您没有指定它,它会将@添加到参数名称中。

好的,对我面前的海报没有冒犯,但我会尽可能简单地向您解释,这样即使是一个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';

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

我们能用另一个字符代替@吗?@Gaurav:不,参数用的是@。你想用什么来代替,为什么?我只是想知道。仅此而已。您的变量使用示例并没有显示变量的实际使用方式。在需要条件之后,不能只使用变量或文字值。你需要一些类似的东西,例如。。。其中column_name=@YOURNAME。
create procedure Something
  @Id int,
  @Name varchar(100)
as
...
SELECT column_name,column_name FROM table_name WHERE column_name = @YOURNAME;

@YOURNAME = 'John Doe';
SELECT column_name,column_name FROM table_name WHERE column_name = 'John Doe';