【问题标题】:extract values from DataTable with single row从单行数据表中提取值
【发布时间】:2015-03-14 07:50:52
【问题描述】:

如何从具有单行的数据表中提取值并分配给 asp 标签。

private void GetUser(string userId)
{
    dbr.SelectString = "select name, gender,  address, contactno from userInfo where id = = '" + userId + "' --"; // return single row
    DataTable dt = dbr.GetTable();
    //DataRow row = dt.Rows[0];
    // how to retrieve the fields from the data table.
    //lbl_name = name.ToString();
    //lbl_gender = gender.ToString();
    //lbl_contact = contactno.ToString();
}

我想过使用foreach 循环,但数据表只包含单行。 如何在 NULL 单元格的情况下传递空字符串。 另外,我可以通过 list 从数据表中提取值吗?

【问题讨论】:

    标签: c# .net datatable datarow


    【解决方案1】:
    private void GetUser(string userId)
    {
        dbr.SelectString = "select name, gender,  address, contactno from userInfo where id = = '" + userId + "' --"; // return single row
        DataTable dt = dbr.GetTable();
        if (dt.Rows.Count > 0) 
        {
            DataRow row = dt.Rows[0];
    
            lbl_name = row["name"].ToString();
            lbl_gender = row["gender"].ToString();
            lbl_contact = row["contactno"].ToString();
        }
    }
    

    【讨论】:

    • 感谢您的及时回复。我可以将此数据表转换为列表和检索值吗?哪个会更好?请你解释一下。
    • @user4221591,哪种列表? dataTable 包含 1 行,创建一个自定义类型的对象
    【解决方案2】:

    只需一行

    dbr.SelectString = "select name, gender,  address, contactno from userInfo where id = = '" + userId + "' --"; 
    DataTable DataTable_Values= dbr.GetTable(); 
    lbl_name =  DataTable_Values.Rows[0].Field<string>("name");
    lbl_gender =  DataTable_Values.Rows[0].Field<int>("gender");
    lbl_contact =  DataTable_Values.Rows[0].Field<int>("contact")
    

    【讨论】:

      【解决方案3】:

      要获取所有行的列表,您需要一个类

        class Lbl()
                  {
                      public string Name {get; set;}
                      public string Gender {get; set;}
                      public string Contact {get; set;}
                  }
      

      补课:

       List<Lbl> list = new List<Lbl>();
                  foreach(DataRow row in dt.Rows)
                  {
                      Lbl lbl = new Lbl();
                      lbl.Name = row["name"].ToString();
                      lbl.Gender = row["gender"].ToString();
                      lbl.Contact = row["contactno"].ToString();
      
                      list.add(lbl);
                  }
      

      【讨论】:

      • 列返回 NULL 值时如何处理。请你分享一下。
      • 对象值 = row["name"]; if (!value == DBNull.Value) { } else { }
      • 在MsSQL中你可以使用IsNull-Method: SELECT ISNULL(name,'') AS name
      • @user4221591,dataRow 单元格的值永远不能为空。来自 db 的 NULL 将被转换为 DbNull.Value
      【解决方案4】:

      它已经很晚了,但我认为您正在寻找的是下面的代码,这个 Datatable 是查询的结果。然后将该 DT 及其所有行和列解析为字符串。

      DataTable dt = Execute_Query(Connection, query);
                  if (dt != null)
                  {
                      if (dt.Rows.Count > 0)
                      {
                          J = dt.Rows.Count;
      
                          StringBuilder sb = new StringBuilder();
      
                          for (int i = 0; i < dt.Rows.Count; i++)
                          {
                              for (int j = 0; j < dt.Columns.Count; j++) 
                              {
                                  sb.Append(dt.Rows[i][j] + ",");
                              }
                              sb.Append("\n");
                          }
      
                          Logger.Info(sb.ToString());
                      }
                  }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-05-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-05-06
        • 2020-07-12
        相关资源
        最近更新 更多