如何从NpgsqlDataReader获取行数

时间:2011-05-13 12:52:18

标签: c# npgsql

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

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

4 个答案:

答案 0 :(得分:2)

如果NpgsqlDataReader继承自DbDataReader其他DataReader,则可以查看

if (reader.HasRows) {...}

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

如果您只想快速预览。

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

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

示例:

从[TABLE]中选择*,其中[CONDITION] LIMIT 2

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

答案 3 :(得分:0)

我还想获得进度条的行数,但似乎我不能迭代两次是为了显示进度太多的工作;)

您可以创建一个代理类,它是NpgsqlDataReader的子代,您可以在其中重新实现迭代器(extends IEnumerable),如果您{.Read(),它将隐式迭代最多2行。 {1}}或者问.CountClass - 然后它会在直接阅读其余内容之前从其缓存中提供这两个。