C# 为什么可以';加载(IDataReader)是否加载一行?
我正在使用C# 为什么可以';加载(IDataReader)是否加载一行?,c#,datatable,idatareader,C#,Datatable,Idatareader,我正在使用DataTable.Load(IDataReader)从数据库加载数据。 当我加载一条记录时,DataTable.Rows.Count显示计数0,但当我加载多条记录时,DataTable.Rows.Count显示正确的计数 这是否意味着DataTable.Load方法需要两行以上的数据? 这篇文章很有帮助,但没有回答我的问题 代码 DataTable dt= new Datable IDataReader rsg = DataClass.GetDBResults("sp_GetNam
DataTable.Load(IDataReader)
从数据库加载数据。当我加载一条记录时,
DataTable.Rows.Count
显示计数0
,但当我加载多条记录时,DataTable.Rows.Count
显示正确的计数
这是否意味着DataTable.Load方法
需要两行以上的数据?这篇文章很有帮助,但没有回答我的问题
代码
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
返回一条记录。您调用的是Read()
,读取第一条记录,然后调用Load()
。问题是,在调用Read()
后,rsg
中指向“当前记录”的指针已经移动过第一条记录,并指向下一条记录(如果有)。调用Load()
只读取其余记录,因为IDataReader
是一种仅向前的机制
调用Load()
而不首先调用Read()
您正在调用Read()
,它读取第一条记录,然后您正在调用Load()
。问题是,在调用Read()
后,rsg
中指向“当前记录”的指针已经移动过第一条记录,并指向下一条记录(如果有)。调用Load()
只读取其余记录,因为IDataReader
是一种仅向前的机制
调用Load()
而不首先调用Read()
您正在调用Read()
,它读取第一条记录,然后您正在调用Load()
。问题是,在调用Read()
后,rsg
中指向“当前记录”的指针已经移动过第一条记录,并指向下一条记录(如果有)。调用Load()
只读取其余记录,因为IDataReader
是一种仅向前的机制
调用Load()
而不首先调用Read()
您正在调用Read()
,它读取第一条记录,然后您正在调用Load()
。问题是,在调用Read()
后,rsg
中指向“当前记录”的指针已经移动过第一条记录,并指向下一条记录(如果有)。调用Load()
只读取其余记录,因为IDataReader
是一种仅向前的机制
调用
Load()
而不首先调用Read()
请显示您的代码。如果看不到您正在做什么,就不可能真正帮助您。如果.Rows.Count
为零:您没有加载任何行;你能展示一下你的代码吗?听起来你在调用Load()之前已经读过一条记录了。IDataReader的默认位置在第一条记录之前。在调用Load()之前,您是否在IDataReader上调用了Read(),或者其他可能会移动读取器位置的操作?正如其他人提到的,查看代码会有所帮助。我已经添加了代码。请显示您的代码。如果看不到您正在做什么,就不可能真正帮助您。如果.Rows.Count
为零:您没有加载任何行;你能展示一下你的代码吗?听起来你在调用Load()之前已经读过一条记录了。IDataReader的默认位置在第一条记录之前。在调用Load()之前,您是否在IDataReader上调用了Read(),或者其他可能会移动读取器位置的操作?正如其他人提到的,查看代码会有所帮助。我已经添加了代码。请显示您的代码。如果看不到您正在做什么,就不可能真正帮助您。如果.Rows.Count
为零:您没有加载任何行;你能展示一下你的代码吗?听起来你在调用Load()之前已经读过一条记录了。IDataReader的默认位置在第一条记录之前。在调用Load()之前,您是否在IDataReader上调用了Read(),或者其他可能会移动读取器位置的操作?正如其他人提到的,查看代码会有所帮助。我已经添加了代码。请显示您的代码。如果看不到您正在做什么,就不可能真正帮助您。如果.Rows.Count
为零:您没有加载任何行;你能展示一下你的代码吗?听起来你在调用Load()之前已经读过一条记录了。IDataReader的默认位置在第一条记录之前。在调用Load()之前,您是否在IDataReader上调用了Read(),或者其他可能会移动读取器位置的操作?正如其他人提到的,查看代码会有所帮助。我已经添加了代码。谢谢@JeffFerguson。这就是答案。你救了我很多。@Angwenyi如果你能投a而不是aIDataReader
你仍然可以通过Thank@Scott进行If检查我想知道如何检查rsg是否有非常有用的行。谢谢@JeffFerguson。这就是答案。你救了我很多。@Angwenyi如果你能投a而不是aIDataReader
你仍然可以通过Thank@Scott进行If检查我想知道如何检查rsg是否有非常有用的行。谢谢@JeffFerguson。这就是答案。你救了我很多。@Angwenyi如果你能投a而不是aIDataReader
你仍然可以通过Thank@Scott进行If检查我想知道如何检查rsg是否有非常有用的行。谢谢@JeffFerguson。这就是答案。你救了我很多。@Angwenyi如果你可以使用a而不是IDataReader
你仍然可以通过Thank@Scott进行If检查,我想知道如何检查rsg是否有非常有用的行。