什么是"?" 在查询中意味着什么?

eip*_*hyo 2 .net c# sql

在以下查询中,"?"是什么 意思?

this.AdminDelCmd.CommandText =
    "DELETE FROM Admin WHERE (admincd = ?) AND (terminalno = ?)";
Run Code Online (Sandbox Code Playgroud)

Bra*_*don 9

这不是三元运算符,也不是Nullable类型的对象.

这称为参数化查询,用于帮助防止SQL注入.这是SQL语法的"旧风格".当您希望查询与多个不同的数据库(例如MySQL和SQL Server)一起使用时,可以使用此方法.同样用于SQL Server的新样式(如下面指出的那样)使用前缀为参数名称的"@".MySQL还使用"@"作为服务器端用户变量声明,这可能会导致一些混淆.

后来的代码填写了问号.如果你可以发布下几行,那将有助于我们更多.

这里有一些链接可以更彻底地解释事情(第二个是针对asp但适用):http:
//msdn.microsoft.com/en-us/library/cc296201(v = sql.90).aspx
http:// www .aspnet101.com/2007/03 /参数化查询功能于ASP-NET /

  • "不是标准的C#语法" - SQL语法与C#无关.SQL Server语法对命名参数使用@前缀,但其他数据库可能具有不同的约定,或者可能根本不支持命名参数. (2认同)