C# Insert into Database: Strongly Typed DataSet Object हमें जो Classes Provide करता है, उनका प्रयोग करके हम किसी भी Strongly Typed DataTable में नया Record Insert कर सकते हैं। इसे समझने के लिए हम हमारे पिछले Form पर स्थित “Insert New Product” Button पर Click कर सकते हैं। जैसे ही हम इस Button पर Click करते हैं, Main Form का निम्न Code Execute होता है:
private void btnInsertNewProduct_Click(object sender, EventArgs e) { frmAddNewProduct frmANP = new frmAddNewProduct(); frmANP.Show(); btnLoadProducts_Click(sender, e); }
इस Code में सबसे पहले हमने हमारे frmAddNewProduct नाम के Form Type का एक नया Object frmANP Create किया है और फिर उस Object के लिए Show() Method को Invoke किया है। हमने ऐसा इसलिए किया है क्योंकि .NET में हर Form Object एक Class द्वारा Represent होता है और जब तक हम किसी Class का Object Create नहीं करते, हम उसे उपयोग में नहीं ले सकते।
इसीलिए जब हम Visual Studio में Current Windows Forms Application में frmAddNewProduct नाम का नया Form Add करते हैं, Visual Studio उस Form को Represent करने के लिए इसी नाम की एक नई Class Create कर देता है, जिसे Use करने के लिए हम उपरोक्तानुसार Code के माध्यम से Object Create कर सकते हैं।
परिणामस्वरूप जब उपरोक्त Code Run होता है, तो हमारे सामने निम्न चित्रानुसार एक नया Record Insert करने वाला Form Display हो जाता है:
इस Form के विभिन्न Operations को Perform करने के लिए जिन Codes को Define किया गया है, वे निम्नानुसार हैं:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace ManualSTDataSet { public partial class frmAddNewProduct : Form { public frmAddNewProduct() { InitializeComponent(); } private void btnUpdate_Click(object sender, EventArgs e) { try { // Get a new strongly typed row from the table. dsNW.ProductsDataTable dtProducts = new dsNW.ProductsDataTable(); dsNWTableAdapters.ProductsTableAdapter daProducts = new dsNWTableAdapters.ProductsTableAdapter(); //Add one more row, using overloaded Add method. dtProducts.AddProductsRow( productNameTextBox.Text, Convert.ToInt32(supplierIDTextBox.Text), Convert.ToInt32(categoryIDTextBox.Text), quantityPerUnitTextBox.Text, Convert.ToDecimal(unitPriceTextBox.Text), Convert.ToInt16(unitsInStockTextBox.Text), Convert.ToInt16(unitsOnOrderTextBox.Text), Convert.ToInt16(reorderLevelTextBox.Text), Convert.ToBoolean(discontinuedCheckBox.Checked) ); // Update database. daProducts.Update(dtProducts); this.Dispose(); } catch (Exception ex) { MessageBox.Show(ex.Message); } } private void btnCancel_Click(object sender, EventArgs e) { this.Dispose(); } } }
जैसे ही हम Main Form पर दिखाई देने वाले “Insert New Product” Button पर Click करते हैं, frmAddNewProduct नाम का नया Form Create होता है और इस Form को इसके विभिन्न Design Controls के साथ Initialize करते हुए Memory में Load करने का काम निम्न Code द्वारा किया जाता है:
public frmAddNewProduct() { InitializeComponent(); }
Form के Initialize होकर Show होते ही दिखाई देने वाले Form के विभिन्न Fields में नए Product से सम्बंधित Data को Fill करके जैसे ही हम “Update” Button पर Click करते हैं, निम्नानुसार Code Execute होता है:
// Get a new strongly typed row from the table. dsNW.ProductsDataTable dtProducts = new dsNW.ProductsDataTable(); dsNWTableAdapters.ProductsTableAdapter daProducts = new dsNWTableAdapters.ProductsTableAdapter();
ये Code सबसे पहले dtProducts नाम का dsNW.ProductsDataTable Strongly Typed Class का dtProducts नाम का DataTable Object Create करता है और इस DataTable में Data को Fill या Update करने के लिए dsNWTableAdapters.ProductsTableAdapter Type का daProducts नाम का एक DataAdapter Object Create करता है। फिर निम्न Code Execute होता है:
//Add one more row, using overloaded Add method. dtProducts.AddProductsRow( productNameTextBox.Text, Convert.ToInt32(supplierIDTextBox.Text), Convert.ToInt32(categoryIDTextBox.Text), quantityPerUnitTextBox.Text, Convert.ToDecimal(unitPriceTextBox.Text), Convert.ToInt16(unitsInStockTextBox.Text), Convert.ToInt16(unitsOnOrderTextBox.Text), Convert.ToInt16(reorderLevelTextBox.Text), Convert.ToBoolean(discontinuedCheckBox.Checked) );
ये Code Newly Crated dtProducts नाम के Strongly Typed DataTable में एक नया Products Row Add करता है और उसके सभी Columns को Form पर दिखाई देने वाले Bind Controls के Data से Fill करते हुए DataTable में एक नया Record Add कर देता है।
जब हम इस प्रकार से Strongly Typed DataSet Object में एक नया Product Record Add करते हैं, तो Add होने वाले हर Column को Appropriate Type के मान में Type Cast करना जरूरी होता है, इसीलिए हमने String Type के Data को छोडकर अन्य सभी प्रकार के Data को Appropriate Type में Covert करने के बाद ही किया है।
हम देख सकते हैं कि इस Code में हमारे Products Table के सभी Columns को Add किया है, लेकिन ProductID Column को Specify नहीं किया है। क्योंकि सामान्यत: किसी भी Table में जो ID Column होता है, वह Primary Key Column होता है और किसी प्रकार का Error Generate न हो, इसलिए इस Column को Auto-Increment रखा जाता है।
परिणामस्वरूप एक Auto-Incremented Column की Value को Underlying Database स्वं; ही अपने स्तर पर Handle करते हुए Appropriate Primary Key Value से Fill करता रहता है। इसीलिए हमने हमारे Code द्वारा ProductID Value को Manually Fill न किया जा सके, इस हेतु Form पर दिखाई देने वाले ProductID Field को Disabled रखा है।
हालांकि हमने उपरोक्त Code के माध्यम से अपने Strongly Typed DataSet Object में तो एक नया Product Add कर दिया है, लेकिन क्योंकि DataSet एक Disconnected Object होता है, इसलिए DataSet Object में Add किया गया Record तब तक Underlying Database की Products Table में Add नहीं होगा, जब तक कि हम DataAdapter Object के माध्यम से DataTable को Update नहीं करेंगे। इसीलिए इस Event Handler का निम्नानुसार अन्तिम Statement Execute होता है:
// Update database.
daProducts.Update(dtProducts);
ये Statement Execute होते ही हमारा Add किया गया नया Product Underlying Database की Products Table में Physically Add हो जाता है, साथ ही निम्न Statement का Execution होता है:
this.Dispose();
जिसके परिणामस्वरूप दिखाई देने वाला “Add New Product” Form Memory से Unload हो जाता है और हम फिर से Main Form पर आ जाते हैं, जहां यदि हम “Load Products” Button को Click करें, तो हमारा Newly Added Product हमें हमारे Main Form के DataGridView Control में सबसे अन्तिम Record के रूप में निम्न चित्रानुसार दिखाई देने लगता है:
हालांकि हमने हमारे इस Click Handler में बहुत ही सरल Process को Follow करते हुए नया Record Add करने के लिए AddXxxxxxxxxxxx() Method को Use किया है। जबकि यदि हम चाहें तो इसी Click Handler को निम्नानुसार भी Specify कर सकते हैं:
private void btnUpdate_Click(object sender, EventArgs e) { try { // Get a new strongly typed row from the table. dsNW.ProductsDataTable dtProducts = new dsNW.ProductsDataTable(); dsNWTableAdapters.ProductsTableAdapter daProducts = new dsNWTableAdapters.ProductsTableAdapter(); dsNW.ProductsRow newRow = dtProducts.NewProductsRow(); // Fill row with some sample data. //newRow.ProductID = XX; //Filled with Auto-generated Primary Key Value newRow.ProductName = productNameTextBox.Text; newRow.SupplierID = Convert.ToInt32(supplierIDTextBox.Text); newRow.CategoryID = Convert.ToInt32(categoryIDTextBox.Text); newRow.QuantityPerUnit = quantityPerUnitTextBox.Text; newRow.UnitPrice = Convert.ToDecimal(unitPriceTextBox.Text); newRow.UnitsInStock = Convert.ToInt16(unitsInStockTextBox.Text); newRow.UnitsOnOrder = Convert.ToInt16(unitsOnOrderTextBox.Text); newRow.ReorderLevel = Convert.ToInt16(reorderLevelTextBox.Text); newRow.Discontinued = Convert.ToBoolean(discontinuedCheckBox.Checked); // Insert the new row. dtProducts.AddProductsRow(newRow); // Update database. daProducts.Update(dtProducts); this.Dispose(); } catch (Exception ex) { MessageBox.Show(ex.Message); } }
जब हम इस तरीके का प्रयोग करते हैं, तो सबसे पहले हमें dsNW.ProductsRow नाम के Auto-Generated Strongly Typed का एक नया DataRow Object Create करना होता है और इस DataRow Object में Form पर दिखाई देने वाले विभिन्न Binding Controls के मानों को Appropriate Column के साथ Assign करना होता है।
DataRow Object के विभिन्न Columns को Appropriate Values से Assign करने के बाद हमें इस Row को निम्नानुसार Statement के माध्यम से अपने Strongly Typed DataTable Object में Add करना होता है:
// Insert the new row.
dtProducts.AddProductsRow(newRow);
Rows को अपने DataTable में Add करने के बाद हमें DataAdapter Object के माध्यम से Newly Added Row को Underlying Database की Products Table में Add करना होता है, जैसाकि पिछले Event Handler में किया गया है।
ये Article इस वेबसाईट पर Selling हेतु उपलब्ध EBook ADO.NET with C# in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी।
ADO.NET with C# in Hindi | Page:501 | Format: PDF