从只有一行的 DataTable 中提取值

8
如何从只有一行的数据表中提取值并将其赋给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循环,但数据表只包含单行。在空单元格的情况下,我该如何传递空字符串。另外,我能否通过列表从数据表中提取值?

4个回答

24
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
@user4221591,是哪种列表?dataTable 包含 1 行,创建一个自定义类型的单个对象。 - ASh

3

仅仅一行代码

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")

0

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

  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 值的情况。请分享一下。 - user4221591
对象值 = 行["名称"]; 如果 (!值 == DBNull.Value) { } 否则 { } - Thomas
在MsSQL中,您可以使用IsNull方法:SELECT ISNULL(name,'') AS name - Thomas
1
@user4221591,dataRow 单元格的值永远不能为 null。来自数据库的 NULL 将被转换为 DbNull.Value。 - ASh

0

虽然现在已经很晚了,但我认为您正在寻找的是以下代码,这个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());
                }
            }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接