C# “什么是”呢&引用;在查询中是什么意思?

C# “什么是”呢&引用;在查询中是什么意思?,c#,.net,sql,C#,.net,Sql,在下面的查询中,“?”是什么意思 根据不可见查询的内容,它可以是前面提到的三元运算符asah的一部分,也可以是Nullable的缩写 如果它说: object.hasProperty ? "true" : "false"; 这是三元运算符 如果它说: int? anInt; 它意味着NullableanInt,您可以编写anInt=null,如果您正在从数据库中读取数据,并且有一个接受整数值的列或NULL,那么它非常方便。这是一个菜单,即admincd和terminalno的值将在运行时从数

在下面的查询中,“?”是什么意思


根据不可见查询的内容,它可以是前面提到的三元运算符asah的一部分,也可以是
Nullable
的缩写

如果它说:

object.hasProperty ? "true" : "false";
这是三元运算符

如果它说:

int? anInt;

它意味着
Nullable
anInt,您可以编写
anInt=null,如果您正在从数据库中读取数据,并且有一个接受整数值的列或NULL,那么它非常方便。

这是一个菜单,即admincd和terminalno的值将在运行时从数据源解析

我认为您的数据源将是一个DataTable,并且您试图用它更新数据库


DataApapter

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

这称为参数化查询,用于帮助防止SQL注入。这是SQL语法的“旧样式”。当您希望查询处理多个不同的数据库(例如MySQL和SQL Server)时,可以使用此选项。新样式也用于SQL Server(正如下面向我指出的那样)在参数名前面加了一个“@”。MySQL还将“@”用于服务器端用户变量声明,这可能会造成一些混乱

后面的代码将填充问号。如果你能发布下几行,那将对我们有更多帮助

这里有一些链接可以更全面地解释(第二个链接适用于asp):


符号“?”是参数的占位符,稍后将在代码中指定。通过这种方式,SQL命令可以在开始时作为“预编译语句”进行预编译(解析),并在参数可用时在以后的执行过程中更快。

这些是SQL查询中的位置参数(与命名参数相反)

命令中每个位置参数(?)应有一个参数,其顺序与命令文本中位置参数的显示顺序相同

通常使用位置参数

  • 当您的提供程序不支持命名参数时。例如,许多OleDb提供程序不支持命名参数

  • 或者当您需要与多个提供程序的互操作性时。不同的提供程序可能对命名参数有不同的约定(例如,SQL Server使用@前缀作为参数名,但Oracle不使用)。因此,如果要对多个提供程序使用相同的查询语法,通常最好使用位置参数而不是命名参数


你有没有碰巧忘记了这个问题?对它投了否决票,因为它看起来像是一个真正的问题,但没有真正的“问题”——它有点模棱两可。如果OP更新了问题,将删除我的否决票。可能有人刚刚复制并粘贴了一个Java查询;因为这是它处理准备好的语句的方式:这并不能回答问题。问题是关于SQL查询,而不是关于C#特性。如果查询真的发布了,我们都知道。“不是标准的C#语法”——SQL语法与C#无关。SQL Server语法对命名参数使用@前缀,但其他数据库可能有不同的约定,或者可能根本不支持命名参数。啊,感谢您的澄清。我看过的几乎每个网站都有“@”风格的语法,所以我认为它是C#的标准。我只彻底使用了MySQL。
int? anInt;