C# DataTable Class, DataSet का कोई हिस्सा मात्र नहीं है बल्कि ये ADO.NET Architecture का सबसे मुख्य Part है। यानी पूरा ADO.NET मूलत: इसी Object के Around Develop किया गया है और बिना DataSets को उपयोग में लिए हुए भी इसे स्वतं= रूप से किसी Requirement को पूरा करने के लिए Use किया जा सकता है। साथ ही DataTable पूरी तरह से Serializable है और DataSet Object की तरह ही Merge() व GetChanges() जैसे Methods को Support करता है।
यानी जिन Methods को DataSet Object Support करता है उन सभी Methods को DataTable Object भी Support करता है। इसलिए हम DataTable Object को बिना DataSet Object Create किए हुए भी स्वतं= रूप से उपयोग में ले सकते हैं।
इसीलिए जब भी कभी हमें हमारे Database Related .NET Application में किसी Single Table के साथ ही Processing करना होता है, तब हमें DataSet Object Create करने की जरूरत नहीं होती, बल्कि हम एक Single Table Related अपनी सभी Requirements को DataTable Object के माध्यम से भी पूरा कर सकते हैं।
जैसाकि हम पिछले चित्र द्वारा आसानी से समझ सकते हैं कि DataTable Object उन सभी Standard Interfaces को Implement करता है, जिन्हें DataSet Object Implement करता है, अत: ज्यादातर परिस्थितियों में DataSet व DataTable दोनों समान प्रकार की Functionalities Provide करते हैं।
जैसाकि हमने पहले भी बताया कि DataTable Object में अन्य चीजों के अलावा Columns, Rows व Constraints नाम के तीन Collections भी होते हैं। जहां Columns व Constraints Collections आपस में मिलकर DataTable का Schema Define करते हैं और इस बात का ध्यान रखते हैं कि किसी Table में कौनसे Data Hold हो सकते हैं। जबकि Rows Collection में Table का Actual Data Contained होता है। इन तीनों Collections का Description निम्नानुसार होता है:
Columns Property
ये Property System.Data.DataColumnCollection Class का Instance होता है और इसमें DataColumn Type के Zero या अधिक Objects Contained हो सकते हैं। DataColumn Object, DataTable के प्रत्येक Column की Properties जैसे कि Column का नाम, Column में Store हो सकने वाले Data का Type व Primary Key तथा Seed व Step आदि की Information को Define करता है।
Rows Property
ये Property यानी Rows Collection, System.Data.DataRowCollection Class का Instance होता है और इसमें DataRow Type के Zero या अधिक Objects Contained हो सकते हैं। DataRow Object में किसी DataTable के विभिन्न Columns में Store होने वाले Actual Data होते हैं, जिन्हें DataTable.Columns Collection के रूप में Define किया गया होता है। जहां हर DataRow के Columns Collection में प्रत्येक DataColumn के लिए एक Item यानी Actual Data या मान Exist होता है।
Constraints Property
ये Property यानी Constraints Collection, System.Data.ConstraintCollection Class का Instance होता है और इस Class के Objects System.Data.ForeignKeyConstraint Type के अथवा System.Data.UniqueConstraint Type के अथवा दोनों ही प्रकार के Objects के Zero या अधिक Objects का Container होते हैं।
ConstraintCollection उस Action को Define करता है, जिसे किसी Primary-Key Foreign-Key Relationship वाले Column पर उस समय Perform करना होता है, जब उस Column का मान Update या Delete होता है, जबकि System.Data.UniqueConstraint का प्रयोग किसी Column पर इस Rule को Apply करने के लिए किया जाता है कि उस Column में किसी Value को दुबारा Store न किया जा सके। यानी उस Particular Column में Stored सभी मान Unique हों।
C# DataTable – DataColumn Object
जैसाकि हमने पहले भी बताया कि DataColumn Object का प्रयोग किसी DataTable के किसी Column के नाम व उसमें Store होने वाले Data के Type को Define करने के लिए किया जाता है। इसलिए हम DataColumn Constructor का प्रयोग करके या तो एक नया DataColumn Create कर सकते हैं या फिर DataTable.Columns Collection Property के लिए Add() Method को Invoke करते हुए DataTable के लिए नया DataColumn Create कर सकते हैं। जैसे:
//Adding a column using DataColumn() Constructor
DataColumn au_id = new DataColumn(“au_id”, typeof(System.String));
//Adding a column using Add() Method
DataTable allAuthors = new DataTable();
allAuthors.Columns.Add((“au_id“, GetType(System.String));
यहां हमने Add() Method का जो Version Use किया है, उसमें हमें दो Parameters Specify करने होते हैं, जो कि allAuthors नाम के DataTable Object के Columns Collection में Newly Append होने वाले Column के ID यानी नाम व Type को Specify करते हैं।
जबकि Type को Specify करने के लिए हम GetType() या typeof() में से किसी भी Method को Use कर सकते हैं, जैसाकि उपरोक्त दोनों तरीकों में से DataColumn() Constructor वाले पहले तरीके में हमने typeof() Method का प्रयोग किया है, जबकि Add() Method को Use करते समय हमने GetType() Method को Use किया है।
चूंकि Columns Property एक DataColumnCollection Type की Property है और इस Type में Add() Method के चार और Overloaded Versions हैं, जो कि निम्नानुसार हैं:]
Add()
ये Method किसी DataTable Type के Object के DataColumnCollection में एक नया DataColumn Add करता है, जिसके परिणामस्वरूप DataTable में एक नया Column Create होता है। जब हम इस Method में कोई Parameter Specify नहीं करते, तब Create होने वाले नए DataColumn को Automatically Column1, Column2, … जैसा एक Default नाम प्राप्त हो जाता है।
Add(“ColumnName”)
ये Method किसी DataTable Type के Object के DataColumnCollection में एक नया DataColumn Add करता है, जिसका नाम वही होता है, जिसे हम String Parameter के रूप में इस Method में Pass करते हैं। जबकि Default रूप से Newly Create होने वाले Column का Data Type System.String होता है।
Add(PreExistingDataColumnName)
ये Method किसी DataTable Type के Object के DataColumnCollection में किसी पहले से Exist DataColumn को Add करता है।
Add(“SubTotal”, Type.GetType(“System.Single”, “Sum(Price)”)
ये Method किसी DataTable Type के Object के DataColumnCollection में पहले Parameter के रूप में Specify किए गए नाम का एक नया Column Create करता है, जिसका Data Type वही होता है, जिसे दूसरे Parameter के रूप में Specify किया जाता है। जबकि तीसरे Parameter के रूप में Specified Expression के आधार पर हम Column की Values Calculate करते हुए Rows को Filter कर सकते हैं अथवा Syntax में दर्शाए अनुसार एक Aggregate Column Create कर सकते हैं।
इस प्रकार से यदि हम चाहें तो DataTable Classes को Use करते हुए DataTable के तीनों Constructors में से किसी एक Constructor का प्रयोग करके निम्नानुसार DataTable Object Create कर सकते हैं:
DataTable tblAuthors = new DataTable();
//OR
DataTable tblAuthors = new DataTable(“authors”);
//OR
DataTable tblAuthors = new DataTable(“authors”, “xmlAuthorsNamespace”);
और DataTable Object Create करने के बाद हमें इस Newly Created Table Object का Schema Define करना होता है, जिसे Define करने के लिए हम DataColumn Object Create करके उसे Newly Created DataTable Object की Columns Property में Append कर सकते हैं अथवा DataColumn Constructor का प्रयोग करके नया DataColumn Create कर सकते हैं और फिर उस नए DataColumn को Add() Method का प्रयोग करके Newly Created DataTable में Append कर सकते हैं। जैसे:
DataColumn au_id = new DataColumn(“au_id”, typeof(System.String));
tblAuthors.Columns.Add(au_id);
tblAuthors.Columns.Add(“lname”, GetType(System.String));
tblAuthors.Columns.Add(“fname”, GetType(System.String));
इस Code Segment में हमने au_id Column को DataColumn Constructor का प्रयोग करते हुए Create किया है और फिर Newly Created Column को Add() Method के माध्यम से tblAuthors नाम के DataTable Object में Add किया है। जबकि lname व fname DataColumns को हमने सीधे ही tblAuthors के Columns Collection में Add() Method का प्रयोग करते हुए Add किया है।
परिणामस्वरूप जब उपरोक्त दोनों Code Segments Execute होते हैं, तो “authors” नाम की एक Table Create होती है, जिसमें au_id, lname व fname नाम के तीन Columns होते हैं और तीनों ही Columns String Data Type के होने की वजह से String Type का मान Store करते हैं।
C# DataTable – DataRow Object
जब हम पिछले Section में Discuss किए अनुसार DataTable Object Create कर लेते हैं और उसके Schema के रूप में DataColumns Object के माध्यम ये अथवा Columns Collection में Columns Define कर लेते हैं, उसके बाद हम DataTable को Data से Fill कर सकते हैं और DataTable को Data से Fill करने के Process के अन्तर्गत हमें DataTable.Rows Collection में नया DataRow Object Add करना होता है, जो कि DataRowCollection Type का Object होता है।
DataTable में नया Row Create करने के लिए हमें सबसे पहले DataTabe.NewRow() Method को Use करना होता है। ये Method एक DataRow Type का Object Return करता है, जो DataTable Object के Current Schema में Add होने के लिए तैयार होता है। इस DataRow Object के हर Column में हम उपयुक्त Value Set कर सकते हैं और Value Set करने के बाद हम DataTable.Rows.Add() Method को Call कर सकते हैं, जिसमें एक Single Argument के रूप में हम इस Newly Created DataRow Object को Pass कर सकते हैं।
परिणामस्वरूप हमारे DataTable Object में एक नया Row Append हो जाता है। इस पूरी प्रक्रिया को निम्नानुसार Follow किया जा सकता है:
//Creating new DataRow with same schema as the DataTable
DataRow tempRow = tblAuthors.NewRow();
//Set Column Values
tempRow [“au_id”] = 100;
tempRow [“lname”] = “Mishra”;
tempRow [“fname”] = “Kuldeep”;
//Add the DataRow to the DataTable
tblAuthors.Rows.Add(tempRow);
इस Code में हमने tblAuthors DataTable में एक नया Row Add किया है और नया Row Add करने के लिए सबसे पहले हमने tblAuthors.NewRow() Method को Execute किया है, जिससे Return होने वाले DataRow Object का Reference tempRow नाम के Reference Variable में Stored है। चूंकि NewRow() Method को हमने tblAuthors Object के साथ Use किया है, इसलिए Create होने वाला नया Row इसी DataTable के Schema में Add हो सकता है।
फिर हमने Newly Created DataRow Object के Columns में Actual Data को Store करने के लिए इसके साथ Newly Created Row के au_id, lname व fname Columns को Value Assign किया है।
फिर अन्त में इस Newly Created व Value से Set DataRow Object को tblAuthors Table में Row की तरह Add करने के लिए हमने Code Segment के अन्तिम Statement को Specify किया है। इस तरह से tblAuthors नाम की DataTable में एक DataRow Object के माध्यम से एक नया Row Add होता है।
NewRow() Method के प्रयोग द्वारा जो DataRow Object Return होता है, वह तब तक DataTable Object से Detached रहता है, जब तक कि हम Rows.Add() Method को Call नहीं करते और जब तक हम इस Method को Call नहीं करते, तब तक इस Object की RowState Property में Detached मान Stored रहता है। इसलिए इस Object द्वारा Create होने वाली Row अभी भी Table का Part नहीं होता।
ये Article इस वेबसाईट पर Selling हेतु उपलब्ध EBook ADO.NET with C# in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी।
ADO.NET with C# in Hindi | Page:501 | Format: PDF