2013-02-27 1 views
0

IDataReader가 카운트 옵션을 가지고 있지 않습니다. 그리고 datareader에서 행을 셀 수 없으며 다시 읽으려고 할 수 없습니다. 왜냐하면 앞으로 만 감으로써 다시 감을 수 없기 때문입니다. 가장 좋은 해결책은 select 문을 수행하고 datareader에서 행을 계산 한 다음 다른 select 문을 수행하고 데이터로 수행하려는 작업을 수행하는 것입니다.asp.net IDataReader 개수 상황

이 질문은 여러 번 게시되었을 수 있지만 아무도이 문제에 대한 진정한 해결책을 제시하지 못했습니다. 두 번째 선택 진술을하는 동안 가장 좋은 해결책은 무엇입니까? 당신이 그렇지 않으면 바로 결과와 당신이 필요로하는 무엇을 줄 것이다 계산을 interating, 읽기 전에 행 개수를 필요로하는 경우 그것은 단지 문제입니다,

그럼 당신에게

+1

select는 아마 모든 데이터를 요청하고 카운트를 얻기 위해 반복하는 것보다 여러 번 저렴합니다. 데이터베이스는이'SELECT Count (*) FROM dbo.Table'을 최적화하는 데 정말로 영리합니다. –

답변

1

감사 (선택 비싸다). 아니면, 당신은 항상

SELECT [The Real Fields],COUNT(*) as Qty 
WHERE [Conditions] 
UNION 
SELECT [The Real Fields],0 as Qty 
WHERE [Conditions] 

(안 좋은 생각이다) 같은 것을 할 수있는 데이터 세트에 모든게을 읽고 당신이 첫 번째 행을 읽을 때 행 개수를 필요로 가정 할

거기에서 작동하는지 처음 행을 읽으면 사용할 수있는 행의 수를 알 수 있습니다.

네, 합병 및 중복 쿼리없이 행 개수를 얻으려면 SQL을 수행하는 더 좋은 방법이있을 수 있습니다.

+0

잘 설명되어 있습니다. –