数据表仅加载mysqlDataReader的最后一条记录

时间:2013-04-01 11:26:29

标签: asp.net

在我的页面中,mysqlDataReader返回4条记录。每当我将这个mysqlDataReader加载到DataTable时 使用

DataTable dt = new DataTable();
dt.Clear();
dt.Load(dr);

DataTable仅显示最后一条记录。

我的代码是:

DataTable dt = new DataTable();
for (int i = 0; i < gvDemoBatches.Rows.Count; i++)
{
     CheckBox cb = (CheckBox)gvDemoBatches.Rows[i].FindControl("checkSelect");
     if (cb.Checked == true)
     {
         Panel2.Visible = true;
         objBEBatch.BatchID = Convert.ToInt32(((Label)gvDemoBatches.Rows[i].Cells[0].FindControl("lblBatchId")).Text);
          MySqlDataReader dr = objBLAddNewDemo.GetParticularDemoData(objBEBatch);
         dt.Clear();
         dt.Load(dr);
      }
 }

“GetParticularDemoData”stored过程返回7行。但是datatable只显示最后一条记录。

先谢谢, 拉特南。

3 个答案:

答案 0 :(得分:0)

看起来你正在迭代你的阅读,并在每次迭代时清理你的表。尝试使用DataAdapter

 var adapter = new SqlDataAdapter(query);
 adapter.Fill(dt);

答案 1 :(得分:0)

首先请写出正确/完整的代码,以便人们理解! 根据你的代码,dr是一个数据行,dr一次只包含一行, 看起来你可能已经在循环中使用了dr,所以最后它只包含最后一条记录。

所以你的数据表显示最后一条记录。!

答案 2 :(得分:0)

您正在向数据表内部循环添加行。因此,最后一个循环记录将保存在数据表中

for (int i = 0; i < gvDemoBatches.Rows.Count; i++)
{

将执行多次,你可以在其中

 MySqlDataReader dr = objBLAddNewDemo.GetParticularDemoData(objBEBatch);
 dt.Clear();
 dt.Load(dr);

因此,数据表将仅包含gridview的最后一行的数据cb.Checked == true)