【问题标题】:Handling Optional .NET DataSource Parameters处理可选的 .NET 数据源参数
【发布时间】:2011-08-09 19:01:33
【问题描述】:

在 .NET WinForms 应用程序中实现可选查询参数的标准方法是什么?

也就是说,只有在对应控件的值不为空时才查询字段。

注意:首选 VB.NET 答案(C# 也可以)

编辑: 我使用 FillBy 方法在我的 Access 数据库中调用查询。在 TableAdapter 查询编辑器中,我只是使用了WHERE (field1 = ?) AND (field2 = ?) ... 我只是找不到将表单控件绑定到表适配器查询参数的“钩子”,因此如果表单使用默认值就不会对其进行查询。

【问题讨论】:

  • 这在很大程度上取决于您访问数据库的方式。你使用存储过程吗?如何在应用程序中调用这些存储过程?

标签: c# .net database vb.net visual-studio-2010


【解决方案1】:

我的 Access 语法生锈了,因此您可能需要对其进行调整,但您可以尝试以下方法:

WHERE (@Field1 IS NOT NULL AND Field1 = @Field1) AND (@Field2 IS NOT NULL AND Field2 = @Field2)

【讨论】:

    【解决方案2】:

    您可以多次应用 LINQ Where 子句。
    如果您使用的是DataSet,则可以调用AsEnumerable(自.NET 3.5 起可用)对其进行LINQ 查询。

    【讨论】:

    • 我有一个 DataGridView,它绑定到 Access 查询的 BindingSource。我可以只使用设计器吗?
    • 不,我不这么认为。不过,它很容易用代码完成(并且是比设计器拖放-ouch 更好的做法)。
    • 使用 LINQ 方法...我是否只填写 TableAdapter 没有任何条件?然后,使用 LINQ 查询并将这些结果放入我的 DataGridView?
    • 是的,完全正确。如果您有 很多 行,这将不会很棒,因为过滤发生在内存中,而不是在数据库中。试试看它是否适合你。
    • 嗯,我刚刚开始,所以我不知道随着时间的推移它会如何扩展。您有数据库过滤解决方案吗?
    猜你喜欢
    • 2022-10-05
    • 1970-01-01
    • 2013-07-26
    • 2018-02-03
    • 2010-12-04
    • 2018-01-25
    • 1970-01-01
    • 2017-01-14
    • 1970-01-01
    相关资源
    最近更新 更多