2

在使用 select 语句后,我试图从 NpgsqlDataReader 获取行数。我试图检查的原因是在处理数据之前查看它是否有任何数据、单行或是否有多行。任何帮助将不胜感激。

这是在 C# .NET 4 中完成的

4

5 回答 5

2

如果NpgsqlDataReader继承自DbDataReader其他 DataReaders,您可以检查

if (reader.HasRows) {...}

如果有任何结果。但我不认为你可以在不循环阅读器的情况下获得实际的行数......

于 2011-05-13T13:18:00.007 回答
1

通过一些谷歌搜索, NpgsqlDataReader似乎与 sqldatareader 非常相似。sqldatareader 没有内置的方法来获取行数。如果您想获得行数,您似乎必须循环并执行您自己的计数。

于 2011-05-13T13:23:18.257 回答
0

如果您只想快速预览。

1.) 没有结果 2.) 有一个结果 3.) 有多个结果

您可以使用 LIMITer 执行类似的 SQL 语句。这应该非常快。在执行之后,您将检索完整的数据。

例子:

select * from [TABLE] where [CONDITION] LIMIT 2

如果你得到 0 行,没有结果/如果你得到 1 行,一个结果 / 如果你得到 2 行,多个结果

于 2011-05-13T13:26:33.033 回答
0

我也想获得进度条的行数,但似乎我不能迭代两次对于仅仅显示进度来说是太多的工作;)

您可以创建一个代理类,它是NpgsqlDataReader您重新实现迭代器(extends )的子类,如果您或者询问IEnumerable,它将隐式地首先迭代最多 2 行- 然后它将直接从它的缓存中提供这 2行阅读其余部分。.Read().CountClass

于 2011-06-28T11:37:22.237 回答
0

这取决于您的用例,但在我的情况下,我将查询结果放入列表中,然后我可以计算列表中的项目,它可能不适用于您的用例,但您可以在将其列在列表中后的结果。

于 2021-12-31T17:49:36.463 回答