What's new

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

Status
Not open for further replies.

buhayko

Honorary Poster
Joined
Jul 20, 2015
Posts
229
Reaction
270
Points
200
Age
37
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. http://www.phc.onl/#forbidden#.com/images/smilies/new/thumbsup.gif


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 http://www.phc.onl/#forbidden#.com/images/smilies/new/rofl.gif



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 !! http://www.phc.onl/#forbidden#.com/images/smilies/biggrin.png

[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) http://www.phc.onl/#forbidden#.com/images/smilies/new/rofl.gif



Post lang ng replies at violent reactions kung meron man para alam ko kung may mali sa ginawa ko salamat http://www.phc.onl/#forbidden#.com/images/smilies/new/salute.gif
 
Dear buhayko,

Since 2 years have passed since the last reply in this thread, I am locking it to prevent necroposting. Feel free to start a new thread or contact any forum staff if you want this to be reopened.

Thread closed.
 
Status
Not open for further replies.

Similar threads

Back
Top