Kamis, 23 Januari 2014

Membuat Aplikasi PayRoll Menggunakan C# dan MySql Versi 1 - Bag. 3

3. Membuat Data Akses (DAO)
   a. Membuat Class GolonganDAO
Untuk membuat class GolonganDAO, klik kanan pada folder DAO -> Add -> Class..., perhatikan gambar berikut :

 
 
Membuat Class GolonganDAO

Dan tambahkan keyword public pada class GolonganDAO nya.

Untuk mengakses database MySQL kita membutuhkan library MySql Connection yang bisa didownload disini.

Untuk tutorial kali ini saya menggunakan versi MySQL Connector/Net 6.7.4.
Silahkan download library tersebut kemudian lakukan instalasi.

Adapun langkah-langkah untuk menambahkan library tersebut kedalam project, klik kanan References -> Add Reference... :
 
Menambahkan Library MySql Connection

Selanjutnya kita tinggal melengkapi class GolonganDAO nya, ikuti langkah-langkah berikut :
  • Menambahkan namespace MySql.Data.MySqlClient dan AplikasiPayrollDAO.Model
namespace MySql.Data.MySqlClient dibutuhkan agar bisa menggunakan class-class untuk mengakses database MySQL sedangkan namespace AplikasiPayrollDAO.Model agar bisa mengakses class Golongan dari class GolonganDao.

  • Menambah beberapa variabel pendukung seperti conn, strSql dan sebuah constructor
   16 private MySqlConnection conn;
   17         private string strSql = string.Empty;
   18 
   19         //constructor
   20         public GolonganDAO(MySqlConnection conn)
   21         {
   22             this.conn = conn;
   23         }


  • Menambahkan method Save, Update dan Delete
  103 public int Update(Golongan glg)
  104         {
  105             strSql = "UPDATE Golongan SET TJ_Suami_Istri = @1, TJ_Anak = @2, Uang_Makan = @3, Uang_Lembur = @4, Askes = @5 WHERE Golongan = @6";
  106 
  107             using (MySqlCommand cmd = new MySqlCommand(strSql, conn))
  108             {
  109                 cmd.Parameters.AddWithValue("@1", glg.TJ_Suami_Istri);
  110                 cmd.Parameters.AddWithValue("@2", glg.TJ_Anak);
  111                 cmd.Parameters.AddWithValue("@3", glg.Uang_Makan);
  112                 cmd.Parameters.AddWithValue("@4", glg.Uang_Lembur);
  113                 cmd.Parameters.AddWithValue("@5", glg.Askes);
  114                 cmd.Parameters.AddWithValue("@6", glg.Tk_Golongan);
  115 
  116                 return cmd.ExecuteNonQuery();
  117             }
  118         }
  119 
  120         public int Save(Golongan glg)
  121         {
  122             strSql = "INSERT INTO Golongan (Golongan, TJ_Suami_Istri, TJ_Anak, Uang_Makan, Uang_Lembur, Askes) VALUES (@1, @2, @3, @4, @5, @6)";
  123 
  124             using (MySqlCommand cmd = new MySqlCommand(strSql, conn))
  125             {
  126                 cmd.Parameters.AddWithValue("@1", glg.Tk_Golongan);
  127                 cmd.Parameters.AddWithValue("@2", glg.TJ_Suami_Istri);
  128                 cmd.Parameters.AddWithValue("@3", glg.TJ_Anak);
  129                 cmd.Parameters.AddWithValue("@4", glg.Uang_Makan);
  130                 cmd.Parameters.AddWithValue("@5", glg.Uang_Lembur);
  131                 cmd.Parameters.AddWithValue("@6", glg.Askes);
  132 
  133                 return cmd.ExecuteNonQuery();
  134             }
  135         }
  136 
  137         public int Delete(string Tk_Golongan)
  138         {
  139             strSql = "DELETE FROM Golongan WHERE Golongan = @1";
  140 
  141             using (MySqlCommand cmd = new MySqlCommand(strSql, conn))
  142             {
  143                 cmd.Parameters.AddWithValue("@1", Tk_Golongan);
  144 
  145                 return cmd.ExecuteNonQuery();
  146             }
  147         }


  • Menambahkan method GetAll dan GetByTkGolongan
   25  private Golongan MappingRowToObject(MySqlDataReader dtr)
   26         {
   27             Golongan glg = new Golongan();
   28 
   29             glg.Tk_Golongan = dtr["Golongan"] is DBNull ? string.Empty : dtr["Golongan"].ToString();
   30             glg.TJ_Suami_Istri = dtr["TJ_Suami_Istri"] is Nullable ? 0 : (int)dtr["TJ_Suami_Istri"];
   31             glg.TJ_Anak = dtr["TJ_Anak"] is Nullable ? 0 : (int)dtr["TJ_Anak"];
   32             glg.Uang_Makan = dtr["Uang_Makan"] is Nullable ? 0 : (int)dtr["Uang_Makan"];
   33             glg.Uang_Lembur = dtr["Uang_Lembur"] is Nullable ? 0 : (int)dtr["Uang_Lembur"];
   34             glg.Askes = dtr["Askes"] is Nullable ? 0 : (int)dtr["Askes"];
   35 
   36             return glg;
   37         }
   38 
   39         public Golongan GetByTkGolongan(string Tk_Golongan)
   40         {
   41             Golongan glg = null;
   42 
   43             strSql = "SELECT * FROM Golongan WHERE Golongan = @1";
   44 
   45             using (MySqlCommand cmd = new MySqlCommand(strSql, conn))
   46             {
   47                 cmd.Parameters.AddWithValue("@1", Tk_Golongan);
   48 
   49                 using (MySqlDataReader dtr = cmd.ExecuteReader())
   50                 {
   51                     if (dtr.Read())
   52                     {
   53                         glg = MappingRowToObject(dtr);
   54                     }
   55                 }
   56             }
   57 
   58             return glg;
   59         }
   60 
   61 
   62         public List<Golongan> GetAll()
   63         {          
   64             List<Golongan> daftarGlg = new List<Golongan>();
   65             strSql = "SELECT Golongan, TJ_Suami_Istri, TJ_Anak, Uang_Makan, Uang_Lembur, Askes FROM Golongan ORDER BY Golongan";
   66 
   67             using (MySqlCommand cmd = new MySqlCommand(strSql, conn))
   68             {
   69                 using (MySqlDataReader dtr = cmd.ExecuteReader())
   70                 {
   71                     while (dtr.Read())
   72                     {
   73                         daftarGlg.Add(MappingRowToObject(dtr));
   74                     }
   75                 }
   76             }
   77 
   78             return daftarGlg;
   79         }


  • Menambahkan method CheckRecord
   81 public bool CheckRecords(string Tk_Golongan)
   82         {
   83             strSql = "SELECT * FROM Golongan WHERE Golongan = @1";
   84 
   85             using (MySqlCommand cmd = new MySqlCommand(strSql, conn))
   86             {
   87                 cmd.Parameters.AddWithValue("@1", Tk_Golongan);
   88 
   89                 using (MySqlDataReader dtr = cmd.ExecuteReader())
   90                 {
   91                     if (dtr.HasRows)
   92                     {
   93                         return true;
   94                     }
   95                     else
   96                     {
   97                         return false;
   98                     }
   99                 }
  100             }
  101         }


   b. Membuat Class JabatanDAO
Untuk membuat class JabatanDAO, klik kanan pada folder DAO -> Add -> Class..., perhatikan gambar berikut :

 
Membuat Class JabatanDAO

Kemudian lengkapi kode class JabatanDAO nya :.
  • Menambahkan namespace MySql.Data.MySqlClient dan AplikasiPayrollDAO.Model
Tambahkan namespace MySql.Data.MySqlClient dan AplikasiPayrollDAO.Model. Serta jangan lupa untuk memberikan keyword public pada class ini.

  • Menambah beberapa variabel pendukung seperti conn, strSql dan sebuah constructor

  • Menambahkan method Save, Update dan Delete
   22 public int Save(Jabatan jbt)
   23         {
   24             strSql = "INSERT INTO Jabatan (Kode_Jabatan, Nama_Jabatan, Gaji_Pokok, TJ_Jabatan) VALUES (@1, @2, @3, @4)";
   25 
   26             using (MySqlCommand cmd = new MySqlCommand(strSql, conn))
   27             {
   28                 cmd.Parameters.AddWithValue("@1", jbt.Kode_Jabatan);
   29                 cmd.Parameters.AddWithValue("@2", jbt.Nama_Jabatan);
   30                 cmd.Parameters.AddWithValue("@3", jbt.Gaji_Pokok);
   31                 cmd.Parameters.AddWithValue("@4", jbt.TJ_Jabatan);
   32 
   33                 return cmd.ExecuteNonQuery();
   34             }
   35         }
   36 
   37         public int Update(Jabatan jbt)
   38         {
   39             strSql = "UPDATE Jabatan SET Nama_Jabatan = @1, Gaji_Pokok = @2, TJ_Jabatan = @3 WHERE Kode_Jabatan = @4";
   40 
   41             using (MySqlCommand cmd = new MySqlCommand(strSql, conn))
   42             {
   43                 cmd.Parameters.AddWithValue("@1", jbt.Nama_Jabatan);
   44                 cmd.Parameters.AddWithValue("@2", jbt.Gaji_Pokok);
   45                 cmd.Parameters.AddWithValue("@3", jbt.TJ_Jabatan);
   46                 cmd.Parameters.AddWithValue("@4", jbt.Kode_Jabatan);
   47 
   48                 return cmd.ExecuteNonQuery();
   49             }
   50         }
   51 
   52         public int Delete(string Kode_Jabatan)
   53         {
   54             strSql = "DELETE FROM Jabatan WHERE Kode_Jabatan = @1";
   55 
   56             using (MySqlCommand cmd = new MySqlCommand(strSql, Conn))
   57             {
   58                 cmd.Parameters.AddWithValue("@1", Kode_Jabatan);
   59 
   60                 return cmd.ExecuteNonQuery();
   61             }
   62         }


  • Menambahkan method GetAll dan GetByKodeJabatan
   65  public Jabatan MappingRowToObject(MySqlDataReader dtr)
   66         {
   67             Jabatan jbt = new Jabatan();
   68 
   69             jbt.Kode_Jabatan = dtr["Kode_Jabatan"] is DBNull ? string.Empty : dtr["Kode_Jabatan"].ToString();
   70             jbt.Nama_Jabatan = dtr["Nama_Jabatan"] is DBNull ? string.Empty : dtr["Nama_Jabatan"].ToString();
   71             jbt.Gaji_Pokok = dtr["Gaji_Pokok"] is Nullable ? 0 : (int)dtr["Gaji_Pokok"];
   72             jbt.TJ_Jabatan = dtr["TJ_Jabatan"] is Nullable ? 0 : (int)dtr["TJ_Jabatan"];
   73 
   74             return jbt;
   75         }
   76 
   77         public List<Jabatan> GetAll()
   78         {
   79             List<Jabatan> daftarJbt = new List<Jabatan>();
   80             strSql = "SELECT * FROM Jabatan ORDER BY Kode_Jabatan";
   81 
   82             using (MySqlCommand cmd = new MySqlCommand(strSql, conn))
   83             {
   84                 using (MySqlDataReader dtr = cmd.ExecuteReader())
   85                 {
   86                     while (dtr.Read())
   87                     {
   88                         daftarJbt.Add(MappingRowToObject(dtr));
   89                     }
   90                 }
   91             }
   92 
   93             return daftarJbt;
   94         }
   95 
   96         public Jabatan GetByKodeJabatan(string Kode_Jabatan)
   97         {
   98             Jabatan jbt = null;
   99 
  100             strSql = "SELECT * FROM Jabatan WHERE Kode_Jabatan = @1";
  101 
  102             using (MySqlCommand cmd = new MySqlCommand(strSql, conn))
  103             {
  104                 cmd.Parameters.AddWithValue("@1", Kode_Jabatan);
  105 
  106                 using (MySqlDataReader dtr = cmd.ExecuteReader())
  107                 {
  108                     if (dtr.Read())
  109                     {
  110                         jbt = MappingRowToObject(dtr);
  111                     }
  112                 }
  113             }
  114 
  115             return jbt;
  116         }


  • Menambahkan method CheckRecord
  118 public bool CheckRecords(string Kode_Jabatan)
  119         {
  120             strSql = "SELECT * FROM Jabatan WHERE Kode_Jabatan = @1";
  121 
  122             using (MySqlCommand cmd = new MySqlCommand(strSql, conn))
  123             {
  124                 cmd.Parameters.AddWithValue("@1", Kode_Jabatan);
  125 
  126                 using (MySqlDataReader dtr = cmd.ExecuteReader())
  127                 {
  128                     if (dtr.HasRows)
  129                     {
  130                         return true;
  131                     }
  132                     else
  133                     {
  134                         return false;
  135                     }
  136                 }
  137             }
  138         }



Alhamdulillah, akhirnya selesai juga postingan bagian 3 ini. Kita baru saja menyelesaikan pembuatan class GolonganDAO dan class JabatanDAO, sekarang tinggal bagaimana caranya menggunakan class Golongan, GolonganDAO, Jabatan dan JabatanDAO ini pada presentation layer. Insya Allah akan kita bahas pada postingan berikutnya.
Selamat MENCOBA...

Tidak ada komentar:

Posting Komentar