1. Welcome to PHCorner Forums. Take a moment to Sign up and gain unlimited access and extra privileges that guests are not entitled to, such as:

    All that and more! Registration is quick, simple and absolutely free. Join our community today!

BASICS: CRUD [Create/Retrieve/Update/Delete] - C# and MS SQL Server

Discussion in 'Coding, Programming' started by buhayko, Sep 18, 2015.

  1. Hi! Sa mga gusto matuto ng basics sa C# at MS SQL Server
    sa Pag-INSERT, EDIT, DELETE, RETRIEVE ng records sa database tama ang pinasukan niyo. Pero bago umusad sa CRUD may discuss muna ko


    Requirements:



      • Brain
      • Visual Studio 2010 or higher
      • Microsoft SQL Server 2005 or higher

    Ang gagamitin kong approach sa coding is yung 3 Layer Architecture.

    First of all WHY 3 LAYER ARCHITECTURE?

    Let's say meron kang isang Point-of-sale system na windows application na pinadevelop sa'yo ng isang company.
    Karamihan kasi sa mga nagsisimulang magcode madalas gumagawa ng mga classes tapos sa loob ng classes andun lahat ng functions
    e.g. Database connections, mga main functions sa system, etc. in short PINAGHALO-HALO lahat

    Yes, sabihin natin na gumagana ng maayos ang system, pero paano kung sinabi ng client na gusto niya web-based na ang system?
    Gagawa ka ba ulit ng mga bagong methods? Ida-dissect mo yung class mo at kukunin yung mga functions na gagamitin para sa web-based project?
    Syempre hassle yun mga tol

    Dito ngayon pumapasok ang role ni N-tier/3-tier Architecture.
    Sa N-Tier Architecture most common is 3 layers talaga kaya tinawag na 3-Tier meron umaabot pa sa 4 or 5.
    Pero focus tayo ngayon sa 3-Layer.





      • Presentation Layer/ UI Layer
        Alam niyo na siguro 'to. Ito yung Graphical User Interface. Dito nakikipag-interact yung mga end-user sa system.
      • Business Logic Layer
        Ito naman yung nasa taas ni Presentation Layer. Dito nakalagay halos lahat ng business operations sa system mo.
        Dito dadaan yung mga data na galing sa Presentation Layer.
      • Data Access Layer
        Ito naman yung nasa taas ng Business Layer. Ito yung nagsisilbing bridge ng Business Layer para makipag-interact sa database.
        Ito yung naglalaman ng mga methods para magperform ng CRUD operations sa database natin. Dito lahat ng database related stuffs mapupunta. Please or Register to view links


    Malinaw na ba?
    Tara simulan na natin.

    1. Create lang kayo ng new project.
    C# Windows application dapat yung project niyo.
    Pangalanan niyo ng kahit ano

    NOTE: 'Yung Form1 yan na yung presentation layer. Sabi ko nga kanina presentation layer yung user interface natin.


    2. Mag-ADD kayo ng dalawang class file sa project.

    Right click project > Add > Add new item .. or Class ..

    'Yung unang class pangalanan niyong BL or BusinessLayer tapos 'yung isa DAL or DataAccessLayer bahala kayo kung ano gusto niyo malalaki na kayo Please or Register to view links



    Una muna nating i-code yung sa DataAccessLayer na class natin:

    Code:
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Data;
    using System.Data.SqlClient;

    namespace CsharpDemo
    {
    public class DAL
    {
    //eto yung variable na sasalo ng mga error
    //importante kung nag-lolog ka sa system mo
    public static string ErrorMessage { get; set; }

    public static DataTable dt = new DataTable();

    //eto private string na lang din ..
    //basic pa lang naman dito na natin isetset yung connection string natin
    //set niyo kung ano connectionstring gagamitin niyo
    private static string connectionString = string.Empty;

    //Eto yung mga variable para sa mga database transactions
    //private na lang kasi dito lang naman gagamitin sa class na to
    private static SqlConnection sqlConnection = null;
    private static SqlCommand sqlCommand = null;
    private static SqlDataAdapter sqlDataAdapter = null;
    private static SqlDataReader sqlDataReader = null;


    //eto yung method na papasahan mo ng kahit anong select statement
    //tapos lahat ng marereturn na data ilalagay niya sa datatable
    //kaya nakalpublic yung declaration ng datatable natin sa taas
    //para accessible sa sa ibang class
    //bakit static? gusto ko lang haha para di na ko mag-instantiate ng bagong object nitong class na to
    //bakit boolean? mas madali ka para malalaman agad natin kung may mali sa ginawa natin
    public static bool sqlQuery(string sqlstatement)
    {
    DataSet ds = new DataSet();
    try
    {
    using (sqlConnection = new SqlConnection(connectionString))
    {
    sqlConnection.Open();
    using (sqlCommand = new SqlCommand(sqlstatement, sqlConnection))
    {
    using (sqlDataAdapter = new SqlDataAdapter(sqlCommand))
    {
    sqlDataAdapter.Fill(ds);
    dt = ds.Tables[0];
    }
    }
    }
    return true;
    }
    catch (Exception ex)
    {
    ErrorMessage = ex.Message;
    return false;
    }
    finally
    {
    sqlConnection.Close();
    }
    }
    }
    }



    NEW UPDATE !! Please or Register to view links

    [RETRIEVING DATA FROM DATABASE]

    Since meron na tayong Data Access Layer ..
    Setup naman natin yung Business Logic Layer ..

    eto yung code sa loob nung BLL class natin ..
    [note: pinacreate ko kayo ng dalawa class files nung nagcreate tayo ng project]


    Code:
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    namespace CsharpDemo
    {
    public class BLL
    {
    //setup tayo ng property ng class na sasalo sa error ng program :p
    public string ErrorMessage { get; set; }


    //eto may method tayong `display`
    //ito yung magpapasa ng query sa data access layer natin
    public bool display()
    {
    //ito yung query natin na ipapasa sa sqlQuery method natin sa data access layer na class
    string query = @"select customernumber,
    dayspastdue,
    acct_name,
    balance,
    monthlyamortization
    from newendorsed";
    try
    {
    //check if true yung condition natin
    // yung `DAL` is yung name ng class natin for dataaccess layer
    //yung `sqlQuery()` naman is yung static boolean method natin na
    //magreretrieve ng records sa database magpapasa lang tayo ng query
    if (DAL.sqlQuery(query))
    {
    return true;
    }
    //else ilalabas niya yung error message galing sa data access layer kapag false
    else
    {
    ErrorMessage = DAL.ErrorMessage;
    return false;
    }
    }
    catch (Exception ex)
    {
    //catch exception kung may error man na mangyari dito sa method na to :p
    ErrorMessage = ex.Message;
    return false;
    }
    }
    }
    }

    dun naman tayo sa GUI naten
    since may form na tayo .. mag-drag lang kayo ng isang button at isang datagridview
    ang name na ginamit ko sa datagridview ay dgvAccounts at yung button ay btnDisplay

    NOW, double click niyo lang yung button tapos mapupunta kayo sa code-behind sa click event
    bale ganito

    Code:
    private void btnDisplay_Click(object sender, EventArgs e)
    {
    //create kayo ng instance ng class ng business logic layer natin
    //BLL ang binigay na pangalan ko para maikli :D
    BLL bll = new BLL();

    //check natin kung true yung condition para sa `display()` na method na ginawa natin
    if (bll.display())
    {
    //`dgvAccounts` yung name ng datagridview ko
    //kung true yung BLL syempre true din yung sa DAL
    //since true yung DAL may laman na yung datatable natin galing database
    dgvAccounts.DataSource = DAL.dt.DataSet.Tables[0];
    }
    //else? display nating yung error mga idol
    else
    {
    MessageBox.Show("Error: " + bll.ErrorMessage, "System error", MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
    }

    kayo na bahala sa database niyo

    eto SS para maniwala kayong gumagana nga yan

    note: pag nag-ADD kayo ng datagridview wala na kayong gagalawin automatic na magkakaroon
    ng column yun kapag na-bind sa datatable natin





    SANA TAMA YUNG GINAWA KO SA INTERFACE puro console kasi ginagawa ko


    sa susunod na yung iba ..
    siningit ko lang to baka makatulong haha (sana) Please or Register to view links



    Post lang ng replies at violent reactions kung meron man para alam ko kung may mali sa ginawa ko salamat Please or Register to view links
     
Tags / Keywords: