为什么我们使用"@"在SQL表中插入、更新或删除数据时
本文关键字:quot 更新 插入 数据 删除 SQL 我们 为什么 | 更新日期: 2023-09-27 18:14:07
我只是想知道为什么我们在插入或更新或删除sql表中的数据时使用"@",就像我下面使用@name一样。
cmd.Parameters.Add(new SqlParameter("@fname", txtfname.Text));
参见: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对象中有一个未记录的特性,如果您没有指定它,它会在参数名称中添加@)