C# Delete from Database using Generated Code

C# Delete from Database: Strongly Typed DataSet Object हमें जो Classes Provide करता है, उनका प्रयोग करके हम किसी भी Strongly Typed DataTable के किसी Particular Record को Delete कर सकते हैं। इसे समझने के लिए हम हमारे पिछले Form पर स्थित “Delete Product” Button पर Click कर सकते हैं। जैसे ही हम इस Button पर Click करते हैं, Main Form का निम्न Code Execute होता है:

        private void btnDeleteProduct_Click(object sender, EventArgs e)
        {
            frmDeleteProduct frmDP = new frmDeleteProduct();
            frmDP.Show();
        }

इस Code के Response में निम्नानुसार Delete Product Form Display होता है:

C# Delete from Database using Generated Code - Hindi

इस Form के सभी Operations को Normally Perform करने के लिए निम्नानुसार Code 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 frmDeleteProduct : Form
    {
        dsNW.ProductsDataTable dtProducts = new dsNW.ProductsDataTable();
        dsNWTableAdapters.ProductsTableAdapter daProducts = new dsNWTableAdapters.ProductsTableAdapter();
        dsNW.ProductsRow row2Del = null;

        public frmDeleteProduct()
        {
            InitializeComponent();
        }

        private void btnCancel_Click(object sender, EventArgs e)
        {
            this.Dispose();
        }

        private void SearchAndFill()
        {
            try
            {
                //First Fill Data in DataTable
                daProducts.Fill(dtProducts);

                //Then Search from the DataTable
                row2Del = dtProducts.FindByProductID(Convert.ToInt32(productIDTextBox.Text)); 

                //Then Fill DataRow in Frontend Form Binding Controls
                productNameTextBox.Text = row2Del.ProductName;
                supplierIDTextBox.Text = row2Del.SupplierID.ToString();
                categoryIDTextBox.Text = row2Del.CategoryID.ToString();
                quantityPerUnitTextBox.Text = row2Del.QuantityPerUnit;
                unitPriceTextBox.Text = row2Del.UnitPrice.ToString();
                unitsInStockTextBox.Text = row2Del.UnitsInStock.ToString();
                unitsOnOrderTextBox.Text = row2Del.UnitsOnOrder.ToString();
                reorderLevelTextBox.Text = row2Del.ReorderLevel.ToString();
                discontinuedCheckBox.Checked = row2Del.Discontinued;
            }
            catch (Exception ex)
            {
                MessageBox.Show("Record does not exist.");
            }
        }

        private void btnDelete_Click(object sender, EventArgs e)
        {
            SearchAndFill();

            if (row2Del != null)
            {
                var confirm = MessageBox.Show("Do you really want to delete this record?", "Confirmation", MessageBoxButtons.YesNo);

                if (DialogResult.Yes == confirm)
                {
                    daProducts.Delete(
                        row2Del.ProductID,
                        row2Del.ProductName,
                        row2Del.SupplierID,
                        row2Del.CategoryID,
                        row2Del.QuantityPerUnit,
                        row2Del.UnitPrice,
                        row2Del.UnitsInStock,
                        row2Del.UnitsOnOrder,
                        row2Del.ReorderLevel,
                        row2Del.Discontinued
                    );

                    MessageBox.Show("Record Deleted Successfully.");
                    this.Dispose();
                }
            }
        }
    }
}

जैसे ही हम Main Form पर दिखाई देने वाले “Delete Product” Button पर Click करते हैं, frmDeleteProduct नाम का नया Form Create होता है और इस Form को इसके विभिन्न Design Controls के साथ Initialize करते हुए Memory में Load करने का काम निम्न Code द्वारा किया जाता है:

        public frmDeleteProduct()
        {
            InitializeComponent();
        }

Form Initialize होने के साथ ही निम्नानुसार तीन Properties भी Setup हो जाते हैं, जिन्हें पूरे Form की Life के दौरान उपयोग में लिया जा सकता है:

        dsNW.ProductsDataTable dtProducts = new dsNW.ProductsDataTable();
        dsNWTableAdapters.ProductsTableAdapter daProducts = new dsNWTableAdapters.ProductsTableAdapter();
        dsNW.ProductsRow row2Del = null;

इन Codes के माध्‍यम से सबसे पहले dsNW.ProductsDataTable Strongly Type का dtProducts नाम का एक Object Create किया गया है, जो कि Underlying Database की Products Table को Represent करता है।

जबकि इस DataTable में Underlying Database के Products Table के Data को Fill करने अथवा इस DataTable में किए गए Changes को Underlying Database के Products Table में Permanently Update करने के लिए dsNWTableAdapters.ProductsTableAdapter Strongly Type का daProducts नाम का DataAdapter Object Create किया गया है।

इसी तरह से Products Table के Records को Represent करने के लिए dsNW.ProductsRow Strongly Type का row2Del नाम का Reference Variable Create किया गया है, जिसे जरूरत के अनुसार किसी भी Code द्वारा Assign किया जा सकता है। एक प्रकार से Current Form के लिए ये तीनों Properties Global Variables की तरह Treat होती हैं, जिन्हें Form का कोई भी Code Get या Set कर सकता है।

जैसाकि उपरोक्त चित्र में हम देख सकते हैं कि “Product ID” Field के अलावा अन्य कोई भी Field Enabled नहीं है। क्योंकि हम जिस Record को Delete करना चाहते हैं, केवल उस Product के ProductID को ही Form पर Specify करके हमें Delete Button पर Click करना होता है।

चूंकि यदि हमने पिछले Section में जो नया Record Insert किया है, उसे ही Delete करना चाहें, तो Insert किया गया हमारे Record का Product ID 89 था, इसलिए इस Form पर हमें केवल ProductID 89 Specify करने Delete Button पर Click करना होता है। जैसे ही हम Delete Button पर Click करते हैं, निम्न Method Execute होता है:

SearchAndFill();

ये Method Execute होते ही निम्नानुसार Code Execute होते हैं:

        private void SearchAndFill()
        {
            try
            {
                //First Fill Data in DataTable
                daProducts.Fill(dtProducts);

                //Then Search from the DataTable
                row2Del = dtProducts.FindByProductID(Convert.ToInt32(productIDTextBox.Text)); 

                //Then Fill DataRow in Frontend Form Binding Controls
                productNameTextBox.Text = row2Del.ProductName;
                supplierIDTextBox.Text = row2Del.SupplierID.ToString();
                categoryIDTextBox.Text = row2Del.CategoryID.ToString();
                quantityPerUnitTextBox.Text = row2Del.QuantityPerUnit;
                unitPriceTextBox.Text = row2Del.UnitPrice.ToString();
                unitsInStockTextBox.Text = row2Del.UnitsInStock.ToString();
                unitsOnOrderTextBox.Text = row2Del.UnitsOnOrder.ToString();
                reorderLevelTextBox.Text = row2Del.ReorderLevel.ToString();
                discontinuedCheckBox.Checked = row2Del.Discontinued;
            }
            catch (Exception ex)
            {
                MessageBox.Show("Record does not exist.");
            }
        }

इस Code में daProducts नाम का हमारा Strongly Typed DataAdapter Object, जिसे हमने इस Form की Class में एक Property के रूप में Specify किया है, द्वारा dtProducts नाम का हमारा Strongly Typed DataTable Object, Underlying Database  के Data द्वारा Fill हो जाता है।

//First Fill Data in DataTable
daProducts.Fill(dtProducts);

dtProducts DataTable के Data से Fill हो जाने के बाद निम्नानुसार Code Execute होता है, जो कि Products Table के Data से Filled Records वाली DataTable के उस Record को row2Del नाम के Strongly Typed DataRow Type के Object में Retrieve करता, जिसका ID, Form पर दिखाई देने वाले ProductID Textbox में Specify किया गया होता है:

//Then Search from the DataTable
row2Del = dtProducts.FindByProductID(Convert.ToInt32(productIDTextBox.Text));

इस Code के Execute होते ही, यदि Specified ID वाला Record dtProducts नाम के Strongly Typed DataTable Object में Exist न हो, तो एक Exception Trigger होता है, जिसे Handle करने के लिए Specify किया गया Catch Box निम्नानुसार Code Execute करता है:

MessageBox.Show(“Record does not exist.”);

जिसके Response में निम्न चित्रानुसार एक Dialog Box Display होता है, जो इस बात की Information देता है कि जिस Product ID को Record Delete करने के लिए Specify किया गया है, उस ID से सम्बंधित कोई भी Record Exist नहीं है।

C# Delete from Database using Generated Code - Hindi

लेकिन यदि Specified Product ID से सम्बंधित Record DataTable में Exist हो, तो वह Record row2Del नाम के ProductsRow Type के Object में Store हो जाता है तथा SearchAndFill() Method के बचे हुए अन्य Codes के Execution के माध्‍यम से इस row2Del Object में Stored Row के सभी Columns के Data, Form पर दिखाई देने वाले विभिन्न Appropriate Fields में Fill हो जाते हैं और हमें हमारा Form कुछ निम्नानुसार दिखाई देने लगता है:

C# Delete from Database using Generated Code - Hindi

Form पर Specified Product ID वाले Record के Data से Form के विभिन्न Bind Controls Fill हो जाने के साथ ही SearchAndFill() Method का Execution हो जाता है और निम्नानुसार अगला Statement Execute होता है:

if (row2Del != null)

ये if Statement इस बात को Test करता है कि row2Del में किसी ProductsRow Type के Object का Reference Exist है या नहीं। यदि जिस Product ID को Specify किया गया है, उस Product ID से सम्बंधित कोई Row, DataTable में Exist न हो, तो row2Del Object में null Stored होता है, जिसके परिणामस्वरूप if Statement Fail हो जाता है और कोई Action Perform नहीं होता।

लेकिन यदि जिस Product ID को Specify किया गया है, उस Product ID से सम्बंधित कोई Row, DataTable में Exist हो, तो row2Del Object में null Stored नहीं होता। परिणामस्वरूप if Statement Successful हो जाता है और कोई निम्नानुसार Code Execute होता है:

var confirm = MessageBox.Show(“Do you really want to delete this record?”, “Confirmation”, MessageBoxButtons.YesNo);

जिसके Response में निम्नानुसार एक Confirmation Dialog Box Display होता है:

C# Delete from Database using Generated Code - Hindi

ये Dialog Box इस बात को Confirm करता है कि क्या हम वास्तव में Specified Record Delete करना चाहते हैं या नहीं। हम इस Dialog Box पर दिखाई देने वाले “Yes” या “No” में से जिस किसी भी Button को Click करते हैं, उसकी Information confirm नाम के Variable में Store हो जाती है।

यदि हम इस Confirmation Dialog Box पर दिखाई देने वाले Yes Button को Click करते हैं, तो confirm नाम के Variable में “DialogResult.Yes” मान होता है, जबकि No Button को Click करने पर इस Variable में “DialogResult.No” मान Store हो जाता है। इसी confirm Variable में Stored मान के आधार पर निम्नानुसार अगला if Statement Execute होता है:

if (DialogResult.Yes == confirm)

यदि हमने पिछले Message Box पर दिखाई देने वाले “Yes” Button पर Click किया होता है, तो confirm Variable में “DialogResult.Yes” मान होता है। परिणामस्वरूप ये Statement true Return करता है और निम्न Statement Execute होता है:

                    daProducts.Delete(
                        row2Del.ProductID,
                        row2Del.ProductName,
                        row2Del.SupplierID,
                        row2Del.CategoryID,
                        row2Del.QuantityPerUnit,
                        row2Del.UnitPrice,
                        row2Del.UnitsInStock,
                        row2Del.UnitsOnOrder,
                        row2Del.ReorderLevel,
                        row2Del.Discontinued
                    );

हम देख सकते हैं कि वास्तव में यहां पर DataAdapter Object के लिए Delete() नाम का Method Execute हो रहा है, जो कि Parameter के रूप में उस Record के सभी Columns के नामों को Accept करता है, जिन्हें Delete करना है। इस Statement के Execute होने के बाद Underlying Database की Products Table से वह Row Delete हो जाता है, जिसका Product ID Specify किया गया था। इस Statement के Execution के बाद निम्नानुसार अगला Statement Execute होता है:

MessageBox.Show(“Record Deleted Successfully.”);

इस Statement के Execution से हमें फिर से निम्नानुसार एक Dialog Box दिखाई देता है, जिस पर इस बात की जानकारी होती है कि हमारा Specified Product ID वाला Record Permanently Delete हो गया है:

C# Delete from Database using Generated Code - Hindi

जैसे ही हम इस Dialog Box पर दिखाई देने वाले OK Button पर Click करते हैं, हमारा Current Form Unload हो जाता है और हम फिर से अपने Main Form पर आ जाते हैं। जहां यदि हम फिर से “Load Products” Button को Click करें, तो इस बार हमें वह Record दिखाई नहीं देता, जिसका Product ID 89 है, जो इसी बात का Indication है कि हमारा Product ID 89 वाला Record Underlying Database की DataTable से Permanently Delete हो चुका है:

C# Delete from Database using Generated Code - Hindi

ADO.NET with C# in Hindi - BccFalna.com: TechTalks in Hindi ये Article इस वेबसाईट पर Selling हेतु उपलब्‍ध EBook ADO.NET with C# in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी। 

ADO.NET with C# in Hindi | Page:501 | Format: PDF

BUY NOW GET DEMO REVIEWS