2013-03-12 4 views
0

도움이 필요합니다. 나는 어느 방향으로 가야하고 어떤 옵션을 사용하고 싶지도 않고 사용할 수도 없다.내 자신의 SqlDataReader 개체 만들기

데이터를 지정된 서버에서 가져 와서 쉼표로 구분 된 파일로 덤프하는 일반 데이터 덤프 도구를 작성했습니다. 구성이며 실행할 쿼리는이 도구 용으로 특별히 생성 된 SQL 테이블에서 가져옵니다. 그러나 데이터가 다른 서버에서 가져와 함께 병합해야하는 일부 데이터 덤프가 있다는 새로운 요구 사항이 있지만이 "사용자 지정"유형의 끌어 오기/덤프 도구를 변경하고 싶지는 않습니다. 나는 그것을 계속적으로 코딩하지 않도록 그것을 일반화하려고 노력하고있다. 제 생각에는 제보고 도구가 이러한 사용자 지정 유형의 끌어 오기 각각에 사용할 수있는 lib를 만들고이 lib에 의해 반환 된 데이터는 SqlDataReader 개체입니다. 그러나이 lib는 다른 서버에서 가져 와서 데이터를 병합해야하므로 lib의 SqlDataReader를이 풀링 된 데이터와 함께 만들고 데이터 덤프 도구로 반환했거나 너무 많이 생각합니까?

기존의 데이터 덤프 중 일부가 수백만 행이기 때문에 툴이 데이터를 통해 루프하는 방식이 아니기 때문에 배열을 반환하지 않으려 고합니다. 따라서 기존 루프는 메모리를 유지하는 데이터 보관 루프입니다. 그러나 lib는 반환하기 전에 SqlDataReader 개체로 변환 할 수있는 한 2 차원 배열을 만들 수 있습니다. 이렇게하면 응용 프로그램 내에서 루핑을 많이 변경할 필요가 없습니다.

희망은 모두 의미가 있습니다. 나는 머리 주위에 튀어 오르기 때문에 나는 이것을 마치 10 번이나 쓰는 것을 끝내었다.

편집 : 각 레코드는 3 개의 서버에 분산되어 병합되어야 함을 명심하십시오. 이들은 함께 작동하지만 자체 서버가있는 세 가지 다른 프로세스입니다. 서버 1의 ID는 예를 들어 Server2의 Server1ID와 관련됩니다.

+0

뭔가를 쓰고 있다면 아마도 디자인 패턴을 사용하여 코드 작업을 수행하고 코드의 리팩토링/인터페이스 구현을 수행하여 코드의 원래 상태에 영향을주지 않고 기존 프로젝트에만 적용되는 특정 기능을 살펴볼 필요가있을 것입니다 . – MethodMan

+0

@MahmoudFayez 이것은 레코드 1이 모든 서버에 흩어져 있고 병합해야하므로 데이터를 가져오고 덤프하는 서비스입니다. – Switch

답변

0

나는 해결책을 내놓았다. 생성 할 "사용자 지정"보고서를 기반으로 동적으로 개체를 작성합니다. 이 개체는 첫 번째 서버에서 데이터를 가져와 로컬 테이블/SQL Server에 삽입합니다. 그러면 다음 서버로 이동하여 가져온 첫 번째 데이터를 기반으로 데이터를 가져와 동일한 서버 내에서 업데이트합니다. 그런 다음 마침내 마지막 서버가 내 로컬 테이블에 병합되어야하는 최종 데이터를 가져옵니다. 모든 것이 올바르게 병합되면 원래 호출자 인 Data/Dump exe에게 필요한 DataReader로 * back을 선택합니다. 각 사용자 지정 데이터 끌어 오기에 대한 원래 exe 파일을 수정하지 않고이 작업을 수행하는 유일한 방법입니다.

누구나 입력 해 주셔서 감사합니다.

+0

이 방법은 완벽하게 작동합니다. – Switch

1

모든 ADO.NET 데이터 액세스 클래스는 SqlDataReader 대신 IDataReader을 반환 할 수 있도록 공통 인터페이스를 구현합니다.

+0

질문은 여전히 ​​남아 있습니다. 3 개의 다른 서버에있는 데이터로 하나의 IDataReader 개체를 만들 수 있습니까? 이 3 개의 서버는 서로 다른 부분의 데이터를 제공하므로 레코드 3 개가 모든 3 개의 서버에 분산됩니다. – Switch

+0

당신이 원하는 데이터베이스가 이미 C# 클라이언트 라이브러리 (예 : MySql, Oracle, SQLite, PostgreSql 등)에 따라 다르긴하지만 원하는 경우'IDataReader'를 구현하는 클래스를 만들 수 있습니다. –

+0

나는 내 방향에 분명하지 않을 수 있습니다. 이것을 시도해 보도록하겠습니다. 문자열 배열을 받아 IDataReader에 삽입 할 수 있습니까? – Switch