(MySQL) Part 6 Hapus Data Pengguna Pemograman Berorientasi Objek (PBO)

Tags

(MySQL) Part 6 Hapus Data Pengguna Pemograman Berorientasi Objek (PBO)

Pemrograman berorientasi objek (Inggris: object-oriented programming disingkat OOP) merupakan paradigma pemrograman yang berorientasikan kepada objek. Semua data dan fungsi di dalam paradigma ini dibungkus dalam kelas-kelas atau objek-objek.

Class

MySQLConn.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
namespace Youtube.Class
{
    abstract class MySQLConn
    {
        //Penggunaan ExecNonQuery untuk Insert, Delete dan Update
        public abstract int ExecNonQuery(String query);
        //Penggunaan ExecQuery untuk Select
        public abstract DataTable ExecQuery(String query);
    }
}
MySQLService.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
using System.Data;
using MySql.Data.MySqlClient;

namespace Youtube.Class
{
    class MySQLService : MySQLConn
    {
        private String strCon = "";
        private MySqlConnection sConn;
        private MySqlCommand sComm;
        private MySqlDataAdapter dtAdp;
        public String Query;

        public MySQLService()
        {
            strCon = Constr();
            sConn = new MySqlConnection(strCon);
            sComm = new MySqlCommand();
            dtAdp = new MySqlDataAdapter();
        }

        public String Constr()
        {
            String data;
            data = "datasource=localhost;port=3306;Initial Catalog='youtube';username=root;password=gizenzio";
            return data;
        }

        public void BukaKoneksi()
        {
            if (sConn.State == ConnectionState.Closed)
            {
                try
                {
                    sConn.Open();
                }
                catch (Exception)
                {}
            }
        }

        public void TutupKoneksi()
        {
            sConn.Close();
        }

        public override int ExecNonQuery(String Query)
             {
                 int retVal = -1;

                 try
                 {
                     BukaKoneksi();
                     sComm.Connection = sConn;
                     sComm.CommandText = Query;
                     retVal = sComm.ExecuteNonQuery();
                 }
                 catch (Exception) { }
                 finally
                 {
                     TutupKoneksi();
                 }
                 return retVal;
             }

        public override DataTable ExecQuery(String Query)
             {
                 DataTable retVal = new DataTable();
                 try
                 {
                     BukaKoneksi();
                     sComm.Connection = sConn;
                     sComm.CommandText = Query;
                     dtAdp.SelectCommand = sComm;
                     dtAdp.Fill(retVal);
                 }
                 catch (Exception) { }
                 finally
                 {
                     TutupKoneksi();
                 }
                 return retVal;
             }
     }
 }

Pengguna.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Youtube.Class
{
    class Pengguna
    {
        private String id;
        private String nama;
        private String email;
        private String subscribe;

        public Pengguna()
        {
            id = "";
            nama = "";
            email = "";
            subscribe = "";
        }

        public String ID
        {
            set { id = value; }
            get { return id; }
        }

        public String NAMA
        {
            set { nama = value; }
            get { return nama; }
        }

        public String EMAIL
        {
            set { email = value; }
            get { return email; }
        }

        public String SUBCRIBE
        {
            set { subcribe = value; }
            get { return subcribe; }
        }
    }
}

PenggunaService.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;

namespace Youtube.Class
{
    class PenggunaService : Pengguna
    {
        MySQLService mysql;
        DataTable dt;

        public PenggunaService()
        {
            mysql = new MySQLService();
            dt = new DataTable();
        }

        public void Hapus(String id)
        {
            //Query Hapus Ke Database youtube table pengguna.
            mysql.Query = "DELETE FROM pengguna WHERE id = '" + id + "'";
            if (!(mysql.ExecNonQuery(mysql.Query) > 0))
            {
                throw new Exception("Terjadi kesalahan saat menghapus!");
            }
        }
    }
}

Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Youtube
{
    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
    }
}

Form
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;
using Youtube.Class;

namespace Youtube
{
    public partial class Form1 : Form
    {
        //Memanggil atau menggunakan class yang telah dibuat
        PenggunaService ps = new PenggunaService();

        public Form1()
        {
            InitializeComponent();
        }

        private void tampilpengguna()
        {
            //Meenggunakan class untuk tampil ke datagridview
            dgvselect.DataSource = ps.Tampil();
        }

        private void btnselect_Click(object sender, EventArgs e)
        {
            //Pada saat button menu select diklik panel insert tinggi menjadi 0 dan panel select menjadi 255
            panelwelcome.Height = 0;
            panelinsert.Height = 0;
            panelupdate.Height = 0;
            paneldelete.Height = 0;
            panelselect.Height = 255;

            //Button akan disable atau tidak bisa diklik
            btnselect.Enabled = false;

            //Button menu lainya akan aktif kecuali button menu select
            btndelete.Enabled = true;
            btninsert.Enabled = true;
            btnupdate.Enabled = true;
        }

        private void btninsert_Click(object sender, EventArgs e)
        {
            //Pada saat button menu insert diklik panel select tinggi menjadi 0 dan panel insert menjadi 255
            panelwelcome.Height = 0;
            panelselect.Height = 0;
            panelupdate.Height = 0;
            paneldelete.Height = 0;
            panelinsert.Height = 255;

            //Button akan disable atau tidak bisa diklik
            btninsert.Enabled = false;

            //Button menu lainya akan aktif kecuali button menu insert
            btnselect.Enabled = true;
            btndelete.Enabled = true;
            btnupdate.Enabled = true;
        }

        private void pictureBox2_Click(object sender, EventArgs e)
        {
            //Keluar atau menghentikan program berjalan
            Environment.Exit(0);
        }

        private void btnsimpan_Click(object sender, EventArgs e)
        {
            //Set nama, nama, subscribe berdasarkan yang diinputkan ke Textbox
            //Menyimpan data pengguna ke database youtube table pengguna
            ps.NIM = txtnim.Text;
            ps.NAMA = txtnama.Text;
            ps.JURUSAN= txtemail.Text;
            ps.SEMESTER = txtsubscriber.Text;
            ps.Simpan();

            //Jika simpan berhasil akan muncul MessageBox dan text akan terbersihkan.
            //MessageBox.Show("Simpan Berhasil");
            txtnim.Clear();
            txtnama.Clear();
            txtemail.Clear();
            txtsubscriber.Clear();

            //Tanpa Message Box hanya bermain text
            btnsimpan.Text = "Simpan Berhasil";

            //Jika button disimpan timer memulai
            timer.Start();

            //Meload datagridview setelah selesai menyimpan
            tampilpengguna();
        }

        public int waktu
        {
            set;
            get;
        }

        private void timer_Tick(object sender, EventArgs e)
        {
            if( waktu > 0 )
            {
                waktu = waktu - 1;
            }
            else
            {
                timer.Stop();
                //Mengganti text btnsimpan yang tadinya Simpan berhasil menjadi Simpan.
                btnsimpan.Text = "Simpan";
                //Mengganti text btnupdate yang tadinya Simpan berhasil menjadi Update.
                btnupdatepengguna.Text = "Update";
                //Mengganti text btnhapus yang tadinya Simpan berhasil menjadi Hapus.
                btnhapus.Text = "Hapus";
            }
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            //Form load data akan dipanggil pada saat Form muncul
           tampilpengguna();
        }

        private void btnupdate_Click(object sender, EventArgs e)
        {
            //Pada saat button menu update diklik panel insert tinggi menjadi 0 dan panel select menjadi 255
            panelwelcome.Height = 0;
            panelinsert.Height = 0;
            panelupdate.Height = 255;
            panelselect.Height = 0;
            paneldelete.Height = 0;

            //Button akan disable atau tidak bisa diklik
            btnupdate.Enabled = false;

            //Button menu lainya akan aktif kecuali button menu update
            btnselect.Enabled = true;
            btninsert.Enabled = true;
            btndelete.Enabled = true;
        }

        private void btnupdatepengguna_Click(object sender, EventArgs e)
        {
            //Set nama, nama, subscribe berdasarkan yang diinputkan ke Textbox
            //Mengupdate data pengguna ke database youtube table pengguna
            ps.NAMA = txtnamaupdate.Text;
            ps.JURUSAN = txtemailupdate.Text;
            ps.SEMESTER = txtsubscribeupdate.Text;
            ps.Ubah(txtidupdate.Text);

            //Jika ubah data berhasil
            btnupdatepengguna.Text = "Update Berhasil";
            txtidupdate.Clear();
            txtnamaupdate.Clear();
            txtemailupdate.Clear();
            txtsubscribeupdate.Clear();
           
            //timer berjalan
            timer.Start();

            //Datagridview mereload ulang
            tampilpengguna();
        }

        private void dgvselect_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            //Pada saat datagridview salah satu baris di klik maka value atau isinya akan muncul di textbox bagian update.
            DataGridViewRow row = this.dgvselect.Rows[e.RowIndex];

            //Value Tampil di Textbox Update
            txtidupdate.Text = row.Cells[0].Value.ToString();
            txtnamaupdate.Text = row.Cells[1].Value.ToString();
            txtemailupdate.Text = row.Cells[2].Value.ToString();
            txtsubscribeupdate.Text = row.Cells[3].Value.ToString();

            //Value Tampil di Textbox Delete
            txtidhapus.Text = row.Cells[0].Value.ToString();
            txtnamahapus.Text = row.Cells[1].Value.ToString();
            txtemailhapus.Text = row.Cells[2].Value.ToString();
            txtsubscribehapus.Text = row.Cells[3].Value.ToString();
        }

        private void btnhapus_Click(object sender, EventArgs e)
        {
            //Hanya Text ID pengguna yang digunakan untuk menghapus
            ps.Hapus(txtidhapus.Text);

            //Jika hapus berhasil
            btnhapus.Text = "Hapus Berhasil";
            txtidhapus.Clear();
            txtnamahapus.Clear();
            txtemailhapus.Clear();
            txtsubscribehapus.Clear();

            //Waktu berjalan start
            timer.Start();

            //Reload datagridview
            tampilpengguna();
        }

        private void btndelete_Click(object sender, EventArgs e)
        {
            //Pada saat button menu delete diklik panel insert tinggi menjadi 0 dan panel select menjadi 255
            panelwelcome.Height = 0;
            panelinsert.Height = 0;
            panelupdate.Height = 0;
            panelselect.Height = 0;
            paneldelete.Height = 255;

            //Button akan disable atau tidak bisa diklik
            btndelete.Enabled = false;

            //Button menu lainya akan aktif kecuali button menu delete
            btnselect.Enabled = true;
            btninsert.Enabled = true;
            btnupdate.Enabled = true;

        }

        private void btnkeluar_Click(object sender, EventArgs e)
        {
            //Keluar dari program atau close
            Application.Exit();
        }
    }
}
Saya bagi menjadi beberapa bagian :

#1 - Membuat Database : https://youtu.be/Ho1fiH-N1gc

#2 - Membuat Desain : https://youtu.be/kcBhMA-MhrU

#3 - Simpan Data : https://youtu.be/9q_W6EVySdI

#4 - Tampil Data : https://youtu.be/EVPLgHOXPEQ

#6 - Hapus Data : https://youtu.be/RKx2Qilj8og

Ada pertanyaan langsung di comment youtube.