2013-08-29 5 views
1

내 작업은 DataReader의 상태를 동일한베이스에 대한 다른 연결로 저장하는 것입니다.다른 연결에 DataReader를 다시 사용하십시오.

데이터베이스에 많은 테이블이 있습니다. 그 중 하나는 항상 읽기 전용이고 다른 하나는 수정할 수 있습니다. DataReader을 만들고 싶습니다. 동일한 연결을 연 후에 최근 위치에서 다시 열리게됩니다. 읽기 전용 테이블 내용에 따라 다른 테이블을 수정해야하며 매번 검색 할 때마다 최근 행부터 시작해야합니다.

내 읽기 전용 테이블이 정말 크고 DataReader을 사용하면 내 프로그램이 훨씬 더 빠르게 비교할 수없이 빠릅니다. SQL Server, DAOOracle에 대한 솔루션을 찾고 있습니다.

편집 : 실제로 동일한 연결 일 수 있지만 다른 테이블을 번갈아 읽고 쓰는 것이 필요합니다.

+0

데이터 테이블에 데이터 판독기의 내용을 넣고 데이터 테이블 –

+0

을 사용하십시오. 제가 말했던 것처럼 : 내 읽기 전용 테이블은 정말 큽니다. 그것은 많은 기가 바이트의 크기를 가질 수 있습니다. RAM에 저장하는 것은 용납되지 않습니다. –

+0

하나의 연결은 읽기 용이고 다른 하나는 옵션 쓰기 용입니까? 읽기 연결과 데이터 아 래더를 열어 둘 수 있습니다. –

답변

1

연결이 열려 있고 datareader가 실행 된 쿼리의 마지막 행에 도달하지 않는 한 DataReader.Read()는 다음 행을 가져옵니다. 그러나 연결이 닫히면 기본 데이터 배열이 닫히므로 쿼리를 다시 실행해야하고 1 행에서 반복을 시작해야합니다.

필요에 따라 가능한 한 가지 방법은 커서 위치를 나타내는 테이블의 불린 (boolean) 필드. 그런 다음이 필드가 true로 설정된 행으로 시작하도록 쿼리를 조정하십시오.

+0

당신의 대답에 추가하려면, 만약 그 테이블에 증분 ID (또는 datetime)가 있다면'WHERE Id> @ last_id'를 연속적인'SELECT'에 추가하면 이미 처리 된 레코드를 돌릴 필요가 없습니다. –