我正在批量执行一些 SQL 查询,然后将所有结果集批量取回。我的代码当前放在一起的方式,第一个结果集被跳过。既然我知道了这一点,我可以简单地在我的循环之外添加另一个语句来获取第一个结果,但是我想知道是否有更优雅的解决方案来解决这个问题。
这是发生了什么的一些 sudo 代码:
DbDataReader reader= /*some stuff that returns a batch of results...*/;
while (reader.NextResult())
{
while (reader.Read())
{
if (!reader.IsDBNull(0))
{
//do things with the data....
}
}
}
现在我本来希望 NextResult() 在您第一次调用它时将您推进到第一个结果,这就是 Read() 似乎所做的。然而,它实际上似乎做的是在第一次通话时将您带到第二个结果。我是否误解了您应该如何使用此方法,或者您是否真的希望执行以下操作:
DbDataReader reader= /*some stuff that returns a batch of results...*/;
//this deals with the row in the the very first result
while (reader.Read())
{
if (!reader.IsDBNull(0))
{
//do things with the data....
}
}
//this deals with the rest of the rows...
while (reader.NextResult())
{
while (reader.Read())
{
if (!reader.IsDBNull(0))
{
//do exact same things with the data....
//is this not pretty klugey?
}
}
}
这让我觉得编程风格很烂,但我看不出有什么办法。有谁知道对此有更优雅的解决方案?