2011-05-13 31 views
2

我想在使用select語句後從NpgsqlDataReader獲取行數。我試圖檢查的原因是在處理數據之前查看它是否有任何數據,單個行或者是否有多行。任何幫助將不勝感激。如何從NpgsqlDataReader獲得行數

這在C#.NET 4

回答

1

從一點谷歌搜索NpgsqlDataReader似乎是非常相似的sqldatareader。 sqldatareader沒有內置的方式來獲得行數。 It would appear如果你想獲得行數,你將不得不循環並執行自己的計數。

2

正在做的。如果從DbDataReaderNpgsqlDataReader繼承其他的DataReader做,你可以用

if (reader.HasRows) {...} 

檢查是否有任何結果。但我不認爲你可以得到沒有循環通過閱讀器的實際行數...

0

如果您只想快速預覽。

1)沒有結果 2)確實有一個結果 3)確實有多個結果

你可以用限制器執行類似的SQL語句。這應該是非常快的。在執行之後,您將檢索完整的數據。

例如:

SELECT * FROM [表格]其中,[條件] LIMIT 2

如果得到0行,沒有結果/ 如果得到1行,一個結果/ 如果得到2行,多個結果

0

我也想獲得行的進度條的數量,但似乎我不能迭代兩次是隻顯示進度的工作太多了;)

您可以創建一個代理類,w這是一個NpgsqlDataReader的孩子,在那裏你重新實現迭代器(擴展IEnumerable),如果你要麼.Read()或要求.CountClass,它將隱含地迭代第一到2行 - 然後它會從它的緩存中給它們2,然後直接讀取其餘的。