DataSet in ADO.NET Tutorial: जैसाकि हमने पहले Chapter में देखा था कि ADO.NET को मूल रूप से दो बडे भागों में Divide किया गया है, जिसके अन्तर्गत विभिन्न Connected व Disconnected Type के Objects को Define किया गया है। Connection, Command, Transaction व Parameter Objects वे Objects हैं, जो कि .NET Data Provider को परिभाषित करते हैं। यानी इन्ही Objects के Combination को .NET Data Provider कहा जाता है और इन Objects को प्रक्रिया करने के लिए हमेंशा Underlying Data Source के साथ Connected रहना जरूरी होता है।
Commands को मूल रूप से तीन भागों में विभाजित किया जा सकता है, जिन्हें Data Definition Language (DDL), Data Manipulation Language (DML) व Data Query Language (DQL) के नाम से जाना जाता है।
DDL Commands का प्रयोग करके किसी Database के Structure को Define किया जाता है। DML Commands का प्रयोग करके हम UPDATE, INSERT व DELETE Queries को Underlying Data Source पर Execute करने की सुविधा प्राप्त करते हैं। जबकि DQL का प्रयोग करके हम Database पर विभिन्न प्रकार की Queries को Fire करते हुए Database में Stored Data को Access करते हैं।
जब एक बार उपरोक्त तीनों में से किसी भी एक प्रकार का Command Execute हो जाता है, तो अक्सर इन Commands के Execution से Return होने वाला Result Singular नहीं होता यानी Executed Query से एक से ज्यादा Results Generate होते हैं। Return होने वाला Resultset एक प्रकार का Tabular Formatted Data होता है, जिसमें एक या एक से अधिक Rows (Records) Contained हो सकते हैं।
इस Resultset को DataReader Object के माध्यम से Connected Fashion में भी Read किया जा सकता है। जबकि Resultset को Read करने का अन्य तरीका ये है कि हम Returned Resultset से किसी Object को Fill कर दें, जो कि Underlying Data Source से पूरी तरह से Disconnected हो।
चूंकि Command के Execute होने पर Generate होने वाला हमारा Data अपने Underlying Database से पूरी तरह से Disconnected होता है, इसलिए इसका Implementation किसी एक Data Source पर आधारित नहीं होना चाहिए। ताकि अलग-अलग प्रकार के Data Sources से Generate होने वाले अलग-अलग प्रकार के Resultset को इस Disconnected Object में बिना किसी परेशानी के Hold किया जा सके।
अन्य शब्दों में कहें तो Generate होने वाले Resultset को Hold करने वाले Disconnected Data का तब तक किसी एक Specific प्रकार के Underlying Data Source जैसे कि MS SQL Server या Oracle पर आधारित नहीं होना चाहिए, जब तक कि Connected व Disconnected Objects के बीच कोई Object Bridge की तरह Exist हो। यानी उस Object का Implementation, जो कि Disconnected Data को Hold कर रहा है, उसका किसी Particular Data Source (Oracle, MySQL, MSSQL Server, etc…) Specific नहीं होना चाहिए। इस प्रकार से Implemented Connected व Disconnected Objects के बीच के Bridge Object को DataAdapter नाम से जाना जाता है।
जैसाकि हमने पहले भी कहा कि Command Execute होने के बाद Generate होने वाले Disconnected Data को Hold करने के लिए हम हमारा स्वयं का Business Object भी Create कर सकते हैं अथवा यदि हम चाहें तो .NET Framework के पहले से Exist DataSet नाम के Object को भी Use कर सकते हैं।
DataSet .NET Framework में एक पहले से Exist व Ready to Use Disconnected Cache Object होता है, जो कि Command के Execute होने के बाद Underlying Data Source से Generate होने वाले Resultset को Disconnected Form में Hold करके रखता है। DataSet Object व उससे Associated विभिन्न Disconnected Objects के Structure को हम निम्नानुसार Represent कर सकते हैं:
DataSet को समझने का सबसे Best तरीका ये है कि RDBMS को DataSet के समान ही माना जाए। यानी DataSet एक प्रकार से किसी RDBMS Software का In-Memory Representation ही होता है और इस Object का मुख्य उद्देश्य वो करना है, जो RDBMS नहीं कर सकता, यानी ये Object किसी RDBMS के Disconnected Form में Memory में Represent करता है।
DataSet जिस प्रकार से किसी RDBMS का In-Memory Representation होता है, ठीक उसी तरह से DataTable किसी RDBMS के किसी Table का In-Memory Representation होता है। जबकि DataRelation Object किसी RDBMS के Foreign-Key Constraint का In-Memory Representation होता है। इसी तरह से DataColumn किसी RDBMS के किसी Table के किसी Column का In-Memory Representation होता है, जबकि DataRow किसी RDBMS के किसी Table के किसी Row का In-Memory Representation होता है।
इस प्रकार से DataSet Object में Tables नाम की एक Property के रूप में DataTable Objects का एक Collection होता है, जो कि DataTableCollection Type का Object होता है। जबकि DataSet Object में Relations नाम की एक Property के रूप में DataRelation Objects का एक Collection होता है, जो कि DataRelationCollection Type का Object होता है।
इसी तरह से DataTable Object में Columns नाम की एक Property के रूप में DataColumn Objects का एक Collection होता है, जो कि DataColumnCollection Type का Object होता है। जबकि DataTable Object में Rows नाम की एक Property के रूप में DataRow Objects का एक Collection होता है, जो कि DataRowCollection Type का Object होता है।
DataTable Object में Constraint भी Defined हो सकता है, जो कि इस Object की Constraints Property के रूप में ConstraintCollection Type के Objects को Hold करता है जो कि या तो Constraint Type का Object होता है या फिर Constraint Type से Inherit होता है।
जब एक बार हमारा Command Execute हो जाता है, जिसे Execute करने के बाद Underlying Data Source से Generate होने वाले Resultset को किसी Disconnected Object में Hold कर दिया जाता है, उसके बाद उस Disconnected Data को Read किया जाता है।
अगले Post में हम ADO.NET Architecture के DataReader व DataAdapter Objects के बारे में विस्तार से समझेंगे, जो कि ADO.NET Architecture अन्तिम मुख्य Objects हैं।
ये Article इस वेबसाईट पर Selling हेतु उपलब्ध EBook ADO.NET with C# in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी।
ADO.NET with C# in Hindi | Page:501 | Format: PDF