簡體   English   中英

建立我自己的SqlDataReader對象

[英]Building my own SqlDataReader object

我需要協助。 我一直在我應該去哪個方向上來回移動,有一些我不喜歡或不能使用的選擇。

我編寫了一個通用的數據轉儲工具,該工具從指定的服務器中提取數據並將其轉儲到以逗號分隔的文件中。 它的配置以及要運行的查詢都來自專門為此工具創建的SQL表。 但是,我有一個新的要求,即有些數據轉儲需要將數據從不同的服務器中提取並合並在一起,但是我不想為這種“自定義”類型的提取/轉儲更改工具。 我正在嘗試使其保持通用,因此我不會不斷對其進行編碼。 我的想法是創建一個庫,我的報表工具可以在其中使用這些自定義類型的每種提取,並且此庫返回的數據是SqlDataReader對象。 但是,由於此lib必須從不同的服務器中提取並合並數據,因此lib可能會使用此提取的數據創建它自己的SqlDataReader並返回到數據轉儲工具,還是我對此是否考慮太多?

我不想返回一個數組,因為它不是該工具現在如何遍歷數據的主要原因,主要是因為我現有的一些數據轉儲是數百萬行,所以我現有的循環是一個datareader循環,用於減少內存。 但是,這些庫可以創建一個二維數組,只要它可以在返回之前轉換為SqlDataReader對象即可。 這樣,我不必在應用程序中的循環上進行太多更改。

希望一切都有道理。 我腦子里有跳動,所以最終寫了十遍。

編輯:請記住,每條記錄將散布在3台服務器中,必須合並。 這是三個不同的流程,它們可以一起工作,但是擁有自己的服務器。 例如,來自服務器1的ID將與Server2上的Server1ID相關。

所有ADO.NET數據訪問類都實現公共接口,因此您可以返回IDataReader而不是SqlDataReader

我想出了一個解決方案。 我將編寫對象,該對象將根據要生成的“自定義”報告動態生成。 該對象將從第一台服務器中提取數據,並將其插入到本地表/ SQL Server中。 然后它將轉到下一個服務器,根據提取的第一個數據提取數據,並在同一服務器內對其進行更新。 然后最后是最后一個服務器,以提取最終數據,這些數據也需要合並到我的本地表中。 一旦所有內容正確合並,我將選擇* back作為原始調用方數據/轉儲exe所需的DataReader。 似乎是進行此工作的唯一真正方法,而無需為每個自定義數據提取修改原始exe。

感謝大家的投入。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM