我正在浏览问题并注意到这一点:
SELECT prodid, issue
FROM Sales
WHERE custid = @custid
AND datesold = SELECT MAX(datesold)
FROM Sales s
WHERE s.prodid = Sales.prodid
AND s.issue = Sales.issue
AND s.custid = @custid
我想知道“@”在custID面前做了什么?它只是一种从所选表中引用custID的方法吗?
答案 0 :(得分:49)
@CustID表示它是一个参数,您将在以后的代码中提供一个值。这是防止SQL注入的最佳方法。使用参数创建查询,而不是连接字符串和变量。数据库引擎将参数值放入占位符所在的位置,并且SQL注入的可能性为零。
答案 1 :(得分:28)
@用作表示存储过程和函数参数名称的前缀,以及变量名称
答案 2 :(得分:2)
您需要定义的参数。为防止SQL注入,您应该将所有变量作为参数传递。
答案 3 :(得分:2)
您可能习惯使用MySQL的语法:Microsoft SQL @
与MySQL的?
答案 4 :(得分:1)
您所说的是参数化查询的编写方式。 '@'只表示它是一个参数。您可以在执行过程中为该参数添加值
eg:
sqlcommand cmd = new sqlcommand(query,connection);
cmd.parameters.add("@custid","1");
sqldatareader dr = cmd.executequery();
答案 5 :(得分:0)
publish data where stoloc = 'AB143'
|
[select prtnum where stoloc = @stoloc]
这就是@
的工作原理。
答案 6 :(得分:0)
@
后跟一个数字是他们在函数中列出的顺序中的参数。