【问题标题】:Selectively filling a dataset有选择地填充数据集
【发布时间】:2023-03-15 22:45:01
【问题描述】:

我需要根据几个标志来更改从数据库中抓取的行。我怎样才能做到这一点?我现在的代码是这样的:

this.tblTenantTableAdapter.Fill(this.rentalEaseDataSet.tblTenant);

假设我只想要 id 大于 50 的行,我会怎么做?

编辑:

访问数据库的代码是很久以前由原始程序员通过 VisualStudio 自动生成的。我不知道如何从自动生成的代码中获得连接。如果我能做到,我知道如何使用 SqlDataAdapter

【问题讨论】:

    标签: c# database .net-3.5


    【解决方案1】:

    为什么不在 SQL 查询中使用 WHERE 子句?

    另外,我希望您不要将ID 字段用于此类事情。如果您只需要前 50 个选项,则可能需要使用 TOP 50 子句或类似的内容。

    有关如何使用 TableAdapter 执行此操作的一些信息:http://www.shiningstar.net/ASPNet_Articles/DataSet/DataSetProject7.aspx

    【讨论】:

    • 我实际上并没有使用 SQL 查询,这是一个问题......我正在处理遗留代码,我必须使用 VS2008 给我的东西以及原始程序员使用的东西。 IE。 TableAdapter 而不是数据库连接。我还在学习 C# :(
    • @malfist:您可以控制代码和数据库,对吧?有什么问题?
    • 我无法控制数据库,访问数据库的代码是很久以前由 Visual Studio 自动生成的。
    • @Malfist:tableadapter 使用 SQL 查询。只需更改查询即可。
    • @Malfist:但你仍然没有解释为什么你会尝试做 ID
    【解决方案2】:

    在服务器端,您可以使用格子旧 SQL:

    SELECT * FROM TBLTENANT WHERE id > 50
    

    在客户端:

    rentalEaseDataSet.tblTenant.DefaultView.RowFilter = "id > 50";
    

    【讨论】:

    • 它附加到的 BindingSource 仍然显示所有行,因此 BindingNavigator 仍然会转到所有行。
    • @Maflist - 改用 BindingSource 过滤器属性。
    【解决方案3】:

    我想最简单的方法是使用 WHERE 子句更改在后台运行的任何 SQL 查询。

    【讨论】:

      【解决方案4】:

      您的 TableAdapter 需要将 CommandText 指定给带有 WHERE 子句的 SQL 查询。

          private void InitCommandCollection() {
              this._commandCollection = new global::System.Data.SqlClient.SqlCommand[1];
              this._commandCollection[0] = new global::System.Data.SqlClient.SqlCommand();
              this._commandCollection[0].Connection = this.Connection;
              this._commandCollection[0].CommandText = @"SELECT * FROM MyTable WHERE ID >50;";
              this._commandCollection[0].CommandType = global::System.Data.CommandType.Text;
          }
      

      注意:上述查询只是一个示例,并不意味着作为解决方案查询。上述代码的格式用于编辑生成的 Table Adapter 设计器类的 InitCommandCollection() 方法,以便您可以指定自己的 SQL。可能您的班级已经有一些 SQL,在这种情况下您可以更改它。

      【讨论】:

      • WHERE 子句中“ID”的存在只是一个示例,代码 sn-p 旨在突出如何编辑 TableAdapter 类以将 SQL 限制添加到生成的设计器文件中。
      • @Jay S:他问怎么做,你要小心在没有警告他的情况下建议他怎么做。
      猜你喜欢
      • 1970-01-01
      • 2019-10-10
      • 2014-05-13
      • 2022-12-04
      • 1970-01-01
      • 2012-12-24
      • 1970-01-01
      • 1970-01-01
      • 2018-09-11
      相关资源
      最近更新 更多