【问题标题】:How to parse a SQL query result and modify it, using C#?如何使用 C# 解析 SQL 查询结果并对其进行修改?
【发布时间】:2009-07-12 12:36:31
【问题描述】:

我正在尝试做一些非常简单的事情,但我似乎找不到正确的方法。

我有一个包含查询结果的 MySqlDataAdapter 对象。我想在将其呈现在 ASP.NET 中继器中之前解析此查询的结果。 (将日期从 Unix Epoch 转换为人类可读之类的东西)。

到目前为止,我无法简单地找到如何创建一个循环,以允许我在 SQL 结果中逐行移动、解析几个字段并更改某些字段的内容。

我也不确定是否可以直接从 MySqlDataAdapter、DataSet 或 DataTable 执行此操作。我在网上看到的大多数示例都没有涵盖该特定主题。

【问题讨论】:

    标签: c# asp.net sql parsing


    【解决方案1】:

    首先你可以用结果填充数据表:

    DataTable table = new DataTable();
    adapter.Fill(table);
    

    之后,您可以遍历 DataTable 并进行修改:

    foreach (DataRow row in table.Rows) {
       row["MyDate"] = DoMagic(row["MyDate"]);
    }
    

    【讨论】:

      【解决方案2】:

      您不能在 DataAdapter 对象上循环您的结果集。你应该fill your results into a DataTable,那么循环行将非常简单:

      DataSet myDataSet = new DataSet();
      myDataAdapter.Fill(myDataSet);
      
      if (myDataSet.Tables.Count > 0)
      {
          foreach (DataRow drResult in myDataSet[0].Rows)
          {
               // Do some stuff here over your row...
          }
      }
      

      【讨论】:

        【解决方案3】:

        在数据集中执行。

        从 dataadapter 填充数据集,然后遍历数据集中的记录并在将其绑定到转发器之前对其进行修改。

        类似:

        DataSet ds = new DataSet();
        da.Fill(ds);
        foreach(DataRow row in ds.Tables[0].Rows)
        {
        row[0] = ParseThisField(row[0]);
        }
        // then do your databind
        

        虽然这样做有点笨拙,但应该足以满足您的目的。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-12-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-07-18
          • 1970-01-01
          • 2018-03-15
          相关资源
          最近更新 更多