我正在使用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
返回一条记录,则 0
为sp_GetNames
。
答案 0 :(得分:3)
您正在呼叫Read()
,它会读取第一条记录,然后您正在呼叫Load()
。问题是,在调用Read()
之后,rsg
中指向“当前记录”的指针已经移过第一条记录并指向下一条记录(如果有的话)。对Load()
的调用只会读取其余的记录,因为IDataReader
是一个仅向前的机制。
在没有第一次拨打Load()
的情况下拨打Read()
。