为什么 DataTable.Load(IDataReader) 不能加载一行?
Why can't DataTable.Load(IDataReader) load one row?
我正在使用 DataTable.Load(IDataReader)
从数据库加载数据。
当我加载一条记录时,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
returns一条记录。
您正在调用 Read()
,它读取第一条记录,然后您正在调用 Load()
。问题是,在调用 Read()
之后,指向 rsg
中的 "current record" 的指针已经移过第一条记录并指向下一条记录(如果有的话)。对 Load()
的调用只会读取其余记录,因为 IDataReader
是一种仅向前机制。
调用 Load()
而不先调用 Read()
。
我正在使用 DataTable.Load(IDataReader)
从数据库加载数据。
当我加载一条记录时,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
returns一条记录。
您正在调用 Read()
,它读取第一条记录,然后您正在调用 Load()
。问题是,在调用 Read()
之后,指向 rsg
中的 "current record" 的指针已经移过第一条记录并指向下一条记录(如果有的话)。对 Load()
的调用只会读取其余记录,因为 IDataReader
是一种仅向前机制。
调用 Load()
而不先调用 Read()
。