【问题标题】:Can DataSet designer in VS2010 support optional parameters?VS2010中的DataSet设计器可以支持可选参数吗?
【发布时间】:2011-10-05 13:34:19
【问题描述】:

我喜欢内置数据集设计器在 VS2010 中提供的许多内置功能,并且如果可能的话,我不想更改为完全不同的东西。问题是,要拥有可选参数,我需要为每个参数组合创建完全独立的函数。所以对于 6 个参数,我需要 63 个不同的函数。这显然是完全无法控制的。

有没有办法让一个函数只在我的 SQL 生成的 WHERE 子句中添加一个参数,如果它有一个值,否则它会忽略它?

【问题讨论】:

  • 您不能使用参数集合并以这种方式创建您的 WHERE 子句吗?
  • @Ramhound 你能提供一个例子来说明如何做到这一点吗?

标签: asp.net visual-studio-2010 strongly-typed-dataset dataset-designer


【解决方案1】:

您可以使用 ISNULL 将这些可选参数添加到 WHERE 子句中:

WHERE (YourTable.Column = ISNULL(@Column, YourTable.Column))

在这种方式下,SQL 可以使用或不使用(可选)参数。如果值为 null,则不会影响结果。 您只需将所有参数添加到 DataAdapter 的参数集合中(AllowDbNull=true 的可选参数)。但我相当确定它们会自动正确添加。

【讨论】:

  • 如何将其添加到自动生成数据集设计器代码 (xsd)?
  • 为什么要添加一些东西?参数在Where-Clause中时应自动创建。
  • 太棒了!我不知何故误解了你第一次的建议。你知道使用这么多 ISNULL 和真理(即 Table.Column=Table.Column)对性能的影响吗?
  • 它应该不会影响性能,请查看以下文章以比较COALESCE(您也可以使用)、ISNULL 和“自然”IS NULL OR ... :blogs.x2line.com/al/archive/2004/03/01/189.aspx
  • 我刚刚意识到,与 ISNULL 语法相比,使用 Table.Column IS NULL 语法有一个很大的优势。如果数据库中的列中有空值,则使用 ISNULL 将不会返回该行(因为 ANSI NULL 比较规则)。如果您使用 IS NULL,它将以任一方式返回该行(在这种情况下更多的预期行为)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-01-01
  • 2021-02-20
  • 2016-07-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多