从asp.net中的DataTable中检索所有行

时间:2016-08-28 13:40:39

标签: asp.net datatable

我创建了一个临时datatable来存储临时数据,然后再将其发送到数据库。但是在创建之后我现在想要从这个临时datatable中获取所有行并将它们保存到数据库中。为此,我使用foreach循环<{1}}循环

datatable

问题是它只是为了整个循环计数一次又一次地获取第一行的数据。就像我有4个 foreach(DataRow r in dt.Rows) { string Fname = dt.Rows[0]["Name"].ToString(); string cType = dt.Rows[0]["ContentType"].ToString(); byte[] ePic = (byte[])dt.Rows[0]["pic"]; BAL.saveEventPictures(Convert.ToInt32(lblEventID.Text), Fname, cType, ePic); } 具有不同的信息一样,这将把第一行的数据存储在数据库中4次。我在做什么错误?

2 个答案:

答案 0 :(得分:0)

dt.Rows[0]表示您始终访问DataTable第一行。您需要使用for循环而不是foreach并使用i访问表的每个索引:

for (int i = 0; i < dt.Rows.Count; i++)
{
    string Fname = dt.Rows[i]["Name"].ToString();
    string cType = dt.Rows[i]["ContentType"].ToString();
    byte[] ePic = (byte[])dt.Rows[i]["pic"];
    BAL.saveEventPictures(Convert.ToInt32(lblEventID.Text), Fname, cType, ePic);
}

答案 1 :(得分:0)

您可以使用for循环来获取有关其数据表中列的所有值,以便在其变量中赋值,以便您可以使用这种方式。因为如果你使用数据表行的硬编码索引,那么它每次都应该只获取单个数据。

此处i是行和列名称的索引,用于从行中获取值。因此,使用基于动态的索引用于获取所有记录。

for (int i = 0; i < dt.Rows.Count; i++)
{
    string Fname = dt.Rows[i]["Name"].ToString();
    string cType = dt.Rows[i]["ContentType"].ToString();
    byte[] ePic = (byte[])dt.Rows[i]["pic"];
    BAL.saveEventPictures(Convert.ToInt32(lblEventID.Text), Fname, cType, ePic);
}