Mengakses database MySQL menggunakan C# bagian 1

Posted by Kamarudin • 4 minute read • Comments

Berhubung sudah mulai bosan bermain-main dengan Visual Basic 6 dan Visual Basic .NET kali ini kita akan menggunakan C# untuk mencoba membuat aplikasi sederhana mengakses database.

Database yang akan kita gunakan adalah MySQL versi 5.x dan untuk C# nya saya menggunakan versi .NET 2008.

Untuk menyederhanan postingan kali ini saya cukupkan dulu untuk mengakses 1 tabel yaitu tabel mahasiswa.

Adapun struktur tabelnya seperti berikut :

Untuk akses database kali ini kita akan menggunakan konsep DAO, walaupun enggak 100% :grin:, dimana kita akan memisahkan modul program menjadi beberapa layer/lapisan yaitu :

  1. Presentation
  2. Business Logic
  3. Data Access

Kok mirip 3-Tier Architecture ya? :grin:

Untuk presentation layer berhubungan dengan UI (user interface) dalam artikel ini kita akan menggunakan Windows Form.

Business Logic biasanya berhubungannya dengan entity class dan entity class sendiri merupakan representasi tabel-tabel yang ada di database.

Terakhir Data Access yaitu bagian yang menangani urusan akses database.

1. Memulai project baru

Jalankan Visual Studio .NET kemudian aktifkan menu File -> New -> Project …

2. Membuat Presentation Layer

Presentation layer berhubungan dengan user interface atau tampilan, dan untuk tampilannya kita akan desain seperti berikut :

3. Membuat Business Logic

Business Logic ada hubungannya dengan entity class yang merupakan representasi dari tabel-tabel yang ada didatabase.

Berdasarkan struktur tabel diatas kita akan menambahkan class baru dengan nama Mahasiswa yang memiliki tiga property yaitu NomorMahasiswa, Nama dan Alamat.

Jadi property ini sudah mewakili method mutator dan accessor yang sudah biasa kita kenal penggunakannya di Java.

Sebelum kita menambahkan class Mahasiswa kita tambahkan dulu folder untuk mengelompok ke tiga layer diatas, caranya dengan mengklik kan project -> Add -> New Folder

kita akan menambahkan 3 folder yaitu Dao, Model dan View

jika sudah kita klik kanan folder Model -> Add -> Class …

pada gambar diatas tambahkan access modifier public agar class Mahasiswa bisa digunakan antar namespace (package kalo istilah javanya).

Oke sampai disini kita tinggal melengkapi kode untuk class Mahasiswa diatas, kode lengkapnya sebagai berikut :

namespace DemoDAO.Model
{
    public class Mahasiswa
    {
        private string nomorMahasiswa;
        public string NomorMahasiswa
        {
            get { return nomorMahasiswa; }
            set { nomorMahasiswa = value; }
        }

        private string nama;
        public string Nama
        {
            get { return nama; }
            set { nama = value; }
        }

        private string alamat;
        public string Alamat
        {
            get { return alamat; }
            set { alamat = value; }
        }
    }
}

4. Membuat Data Access

Lapisan ini biasanya berisi operasi CRUD (Create, Read, Update, Delete), tapi kita akan menggunakan istilah yang sedikit berbeda untuk nama operasinya yaitu :

  1. Save
  2. Update
  3. Delete
  4. GetAll
  5. GetByName

Biasanya untuk penamaan classnya cukup menambahkan Akhiran (Suffixes) Dao untuk setiap class entitynya.

Contoh untuk class entity Mahasiswa, biasanya class Data Accessnya diberi nama MahasiswaDao.

Oke langsung aja kita klik kanan folder Dao -> Add -> Class …

jangan lupa tambahkan juga keyword public pada class MahasiswaDaonya.

jadi hasil akhir sementar project kita seperti berikut :

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

Untuk tutorial kali ini saya menggunakan versi MySQL Connector/Net 6.2.4

Silahkan download library tersebut kemudian lakukan instalasi.

Adapun langkah-langkah untuk menambahkan library tersebut kedalam project adalah sebagi berikut :

Klik kanan References -> Add References …

Selanjutnya kita tinggal melengkapi class MahasiswaDaonya.

1. Menambahkan namespace MySql.Data.MySqlClient dan DemoDAO.Model

namespace MySql.Data.MySqlClient dibutuhkan agar bisa menggunakan class-class untuk mengakses database MySQL sedangkan namespace DemoDAO.Model agar bisa mengakses class Mahasiswa dari class MahasiswaDao.

2. Menambah beberapa variabel pendukung seperti conn, strSql dan sebuah constructor

private MySqlConnection conn;
private string strSql = string.Empty;

// constructor
public MahasiswaDao(MySqlConnection conn)
{
    this.conn = conn;
}

3. Menambahkan method Save, Update dan Delete

public int Save(Mahasiswa mhs)
{
    strSql = "INSERT INTO mahasiswa (nomor_mahasiswa, nama, alamat) VALUES (@1, @2, @3)";

    using (MySqlCommand cmd = new MySqlCommand(strSql, conn))
    {
        cmd.Parameters.AddWithValue("@1", mhs.NomorMahasiswa);
        cmd.Parameters.AddWithValue("@2", mhs.Nama);
        cmd.Parameters.AddWithValue("@3", mhs.Alamat);

        return cmd.ExecuteNonQuery();
    }
}

public int Update(Mahasiswa mhs)
{
    strSql = "UPDATE mahasiswa SET nama = @1, alamat = @2 WHERE nomor_mahasiswa = @3";

    using (MySqlCommand cmd = new MySqlCommand(strSql, conn))
    {
        cmd.Parameters.AddWithValue("@1", mhs.Nama);
        cmd.Parameters.AddWithValue("@2", mhs.Alamat);
        cmd.Parameters.AddWithValue("@3", mhs.NomorMahasiswa);

        return cmd.ExecuteNonQuery();
    }
}

public int Delete(string nomorMahasiswa)
{
    strSql = "DELETE FROM mahasiswa WHERE nomor_mahasiswa = @1";

    using (MySqlCommand cmd = new MySqlCommand(strSql, conn))
    {
        cmd.Parameters.AddWithValue("@1", nomorMahasiswa);

        return cmd.ExecuteNonQuery();
    }
}

4. Menambahkan method GetAll dan GetByName

private Mahasiswa MappingRowToObject(MySqlDataReader dtr)
{
    Mahasiswa mhs = new Mahasiswa();

    mhs.NomorMahasiswa = dtr["nomor_mahasiswa"] is DBNull ? string.Empty : dtr["nomor_mahasiswa"].ToString();
    mhs.Nama = dtr["nama"] is DBNull ? string.Empty : dtr["nama"].ToString();
    mhs.Alamat = dtr["alamat"] is DBNull ? string.Empty : dtr["alamat"].ToString();

    return mhs;
}

public List<Mahasiswa> GetAll()
{
    List<Mahasiswa> daftarMhs = new List<Mahasiswa>();

    strSql = "SELECT nomor_mahasiswa, nama, alamat FROM mahasiswa " +
             "ORDER BY nama";

    using (MySqlCommand cmd = new MySqlCommand(strSql, conn))
    {
        using (MySqlDataReader dtr = cmd.ExecuteReader())
        {
            while (dtr.Read())
            {
                daftarMhs.Add(MappingRowToObject(dtr));
            }
        }
    }

    return daftarMhs;
}

public List<Mahasiswa> GetByName(string nama)
{
    List<Mahasiswa> daftarMhs = new List<Mahasiswa>();

    strSql = "SELECT nomor_mahasiswa, nama, alamat FROM mahasiswa " +
             "WHERE nama LIKE @1 " +
             "ORDER BY nama";

    using (MySqlCommand cmd = new MySqlCommand(strSql, conn))
    {
        cmd.Parameters.AddWithValue("@1", "%" + nama + "%");

        using (MySqlDataReader dtr = cmd.ExecuteReader())
        {
            while (dtr.Read())
            {
                daftarMhs.Add(MappingRowToObject(dtr));
            }
        }
    }

    return daftarMhs;
}

Selesai sudah pembuatan class MahasiswaDaonya sekarang tinggal bagaimana cara menggunakan class Mahasiswa dan MahasiswaDao pada Presentation layer, tapi … akan saya bahas pada postingan berikutnya :grin: insya Allah.

Selamat MENCOBA :blush:

Referensi :

Comments