为什么DataTable.Load(IDataReader)无法加载一行?

时间:2015-04-24 12:52:09

标签: c# datatable idatareader

我正在使用DataTable.Load(IDataReader)从db加载数据 当我加载一条记录时,DataTable.Rows.Count显示的计数为0,但当我加载的记录超出记录DataTable.Rows.Count时显示正确的计数。

这是否意味着DataTable.Load Method需要两行及以上? 这篇文章很有帮助,但没有回答我的问题 https://msdn.microsoft.com/en-us/library/system.data.datatable.load(v=vs.110).aspx

代码

DataTable dt= new Datable
IDataReader rsg = DataClass.GetDBResults("sp_GetNames", "@Names", names);
 if (rsg.Read())
        {   
           dt.Load(rsg);
           int num = dt.Rows.Count;
                //More Code
        }
如果过程num返回一条记录,则

0sp_GetNames

1 个答案:

答案 0 :(得分:3)

您正在呼叫Read(),它会读取第一条记录,然后您正在呼叫Load()。问题是,在调用Read()之后,rsg中指向“当前记录”的指针已经移过第一条记录并指向下一条记录(如果有的话)。对Load()的调用只会读取其余的记录,因为IDataReader是一个仅向前的机制。

在没有第一次拨打Load()的情况下拨打Read()