【问题标题】:C# get many rows in one lineC#在一行中获取多行
【发布时间】:2019-07-08 09:33:01
【问题描述】:

在 C# 中,我目前正在从 SQL 获取一些数据,由于我的选择,我的查询只返回一列(参见下面的代码),但在某些情况下,我可能有不止一行,所以我'想知道是否有办法只在一行文本中返回这些行?

这是我当前的代码:

  public bool getDBValue(string m_strValue, string m_strFilter, string m_strDBTable, out DataSet m_objDs, out string m_strError)

 try
 {
    using (SqlConnection oConn = new SqlConnection(getConnectionString()))
    {
       oConn.Open();
       SqlDataAdapter l_objAdapter = new SqlDataAdapter("Select [" + m_strValue + "] FROM "+ m_strDBTable+" Where ProjectUID =" + "'" + m_strFilter + "'", oConn);
       m_objDs = new DataSet();
       l_objAdapter.Fill(m_objDs);
    }
    return (true);
 }
 catch (Exception e)
 {
    m_strError = e.Message;
    return (false);
 }

因为目前,我将数据与 with line 一起使用:

string value = l_objDs.Tables[0].Rows[0]["ColumnName"].ToString();

但是因为我可以有很多值,所以它只返回一个值。所以知道我该怎么做吗?

谢谢。

【问题讨论】:

  • 一个行字段中不能有多个值。如果要从其他行检索值,请使用不同的行索引。
  • 您可以使用 l_objAdapter.Fill() 方法并继续添加每个查询的结果。只要您只创建一次DataSet。因此,您可以执行以下操作: if(m_objDs == null) m_objDs = new DataSet();那么所有的查询都会被附加到一个 DataSet 中。
  • 您想要多行或只有一行数据具有匹配值?

标签: c# sql-server


【解决方案1】:

不,这是不可能的,因为您在 Table[0] 的 Row[0] 处取值,因此您将获得第一个表的第一行的值。

字符串值 = l_objDs.Tables[0].Rows[0]["ColumnName"].ToString();

我宁愿建议您遍历表行并将其添加到 StringBuilder,然后将其分配给字符串值。

类似下面的东西。

StringBuilder sb = new StringBuilder();
foreach (DataRow dr in l_objDs.Tables[0].Rows)
        {
            sb.Append(dr["ColumnName"]);
        }
 string value= sb.ToString();

希望这会有所帮助!

【讨论】:

    【解决方案2】:

    只需使用foreach 循环遍历所有行:

    string value = "";
    foreach (DataRow row in m_objDs.Tables[0].Rows)
      value += row["ColumnName"];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-01
      • 2014-06-02
      • 2014-06-24
      • 1970-01-01
      • 2019-09-09
      • 1970-01-01
      • 1970-01-01
      • 2023-03-08
      相关资源
      最近更新 更多