.Net C# – Membuat CRUD dengan Database Text File

بِسْمِ اللَّهِ Mudah-mudahan Tutorial .Net C# – Membuat CRUD dengan Database Text File ini bermanfaat

Database ada banyak sekali, mulai dari yang mahal sampai ada yang gratis alias tanpa bayar sepeser pun. Nah pada tutorial kali ini saya akan membahas salah satu penyimpanan data yang gratis yaitu Text File.

  • Text File hanya menyimpan data saja tanpa ada judul kolom.
  • Tidak mengenal field, jadi disini menggunakan karakter pemisah yang kita tentukan sendiri
  • Text File disini tidak harus berekstensi “.txt”. Disini akan disimpan dengan ekstensi “.dll”.

Persiapan .Net C# – Membuat CRUD dengan Database Text File

Yang harus ada:

Microsoft Visual Studio 2010
Buat project seperti yang sudah dikerjakan pada tutorial .Net – Membuat project baru dengan Microsoft Visual Studio 2010

Pertama

Buka project yang sudah dibuat pada Microsoft Visual Studio 2010, kemudian tambahkan file config. File ini untuk pengaturan atau konfigurasi aplikasi. File ini adalah tempat penyimpanan constanta atau variabel-variabel global, seperti configSections, ApplicationSettings. Nanti rencananya saya membuat variabel WorkDir untuk lokasi tempat penyimpanan data (Text File). Kemudian tambahkan File konfigurasi baru, namanya default saja App. Caranya klik kanan pada project di Solution Explorer kemudian pilih Add > New Item…

Kemudian pada Visual C# Items kemudian pilih Application Configuration File, isi nama file pada Name contoh disini App.config seperti pada gambar berikut

Tambahkan script berikut pada file App.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="ApplicationSettings" type="System.Configuration.NameValueSectionHandler" />
  </configSections>
  <ApplicationSettings>
    <add key="WorkDir" value="D:\" />
  </ApplicationSettings>
</configuration>

Kedua

Untuk bisa menggunakan file konfigurasi (App.config) pada project tambahkan library System.Configuration. Caranya klik kanan pada References kemudian pilih Add Reference…

Cari nama library System.Configuration kemudian klik OK, sehingga Solution Explorer seperti gambar dibawah ini

Ketiga

Tambahkan class untuk menghubungkan aplikasi ke Text File. Class ini dibuat untuk 1 tabel 1 class. Caranya klik kanan pada project di Solution Explorer kemudian pilih Add > New Item…

Kemudian pada Visual C# Items pilih Class, isi nama class sesuaikan dengan nama tabel atau data yang akan disimpan pada Name. Contoh disini untuk penyimpanan data user maka saya beri nama DataUser.cs seperti pada gambar berikut

Tambahkan dua baris script berikut ini berikut pada barisan using

using System.IO;
using System.Collections;

Kemudian tambahkan script ini didalam class DataUser

        private FileStream fs = null;
        private StreamReader sr = null;
        private StreamWriter sw = null;

        private string data_path = "";

        public string Path
        {
            get { return data_path; }
            set { data_path = value; }
        }

        private bool CreateFile()
        {
            try
            {
                data_path = data_path.Replace((char)92, '/');
                data_path = data_path.Replace((char)9, '/');                
                if (!File.Exists(data_path))
                {

                    string temp = System.IO.Path.GetDirectoryName(data_path);

                    if (!Directory.Exists(temp))
                    {
                        Directory.CreateDirectory(temp);
                    }
                    fs = new FileStream(data_path, FileMode.CreateNew);
                    fs.Close();

                }
                return true;
            }
            catch (Exception ee)
            {
                Console.WriteLine(ee.Message);
                return false;
            }
        }

        public bool Insert(string usernm, string passwd)
        {

            CreateFile();
            try
            {
                fs = new FileStream(data_path, FileMode.Append);
                sw = new StreamWriter(fs);
                sw.WriteLine(usernm + ";" + passwd);
                sw.Close();
                fs.Close();
                return true;
            }
            catch (Exception ee)
            {
                Console.WriteLine(ee.Message);
                return false;
            }
        }

Pada script class DataUser diatas ada dua fungsi yaitu

  • CreateFile() untuk membuat file database text file untuk penyimpanan data.
  • Insert() untuk menambah record baru

Buat satu lagi class dengan nama Modules, dan berikut scriptnya

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Security.Cryptography;
using System.IO;

namespace TokoProject
{
    class Modules
    {
        public static string Encrypt(string encryptString)
        {
            string EncryptionKey = "Bismillahirrohmanirrohim~!@1234567890#";
            byte[] clearBytes = Encoding.Unicode.GetBytes(encryptString);
            using (Aes encryptor = Aes.Create())
            {
                Rfc2898DeriveBytes pdb = new Rfc2898DeriveBytes(EncryptionKey, new byte[] {      
            0x49, 0x76, 0x61, 0x6e, 0x20, 0x4d, 0x65, 0x64, 0x76, 0x65, 0x64, 0x65, 0x76      
        });
                encryptor.Key = pdb.GetBytes(32);
                encryptor.IV = pdb.GetBytes(16);
                using (MemoryStream ms = new MemoryStream())
                {
                    using (CryptoStream cs = new CryptoStream(ms, encryptor.CreateEncryptor(), CryptoStreamMode.Write))
                    {
                        cs.Write(clearBytes, 0, clearBytes.Length);
                        cs.Close();
                    }
                    encryptString = Convert.ToBase64String(ms.ToArray());
                }
            }
            return encryptString;
        }

        public static string Decrypt(string cipherText)
        {
            string EncryptionKey = "Bismillahirrohmanirrohim~!@1234567890#";
            cipherText = cipherText.Replace(" ", "+");
            byte[] cipherBytes = Convert.FromBase64String(cipherText);
            using (Aes encryptor = Aes.Create())
            {
                Rfc2898DeriveBytes pdb = new Rfc2898DeriveBytes(EncryptionKey, new byte[] {      
            0x49, 0x76, 0x61, 0x6e, 0x20, 0x4d, 0x65, 0x64, 0x76, 0x65, 0x64, 0x65, 0x76      
        });
                encryptor.Key = pdb.GetBytes(32);
                encryptor.IV = pdb.GetBytes(16);
                using (MemoryStream ms = new MemoryStream())
                {
                    using (CryptoStream cs = new CryptoStream(ms, encryptor.CreateDecryptor(), CryptoStreamMode.Write))
                    {
                        cs.Write(cipherBytes, 0, cipherBytes.Length);
                        cs.Close();
                    }
                    cipherText = Encoding.Unicode.GetString(ms.ToArray());
                }
            }
            return cipherText;
        }
    }
}

Class Modules ini untuk keperluan enkripsi password yang akan disimpan ke database.

Keempat

Kemudian tambahkan Form baru, namanya default saja FormUser. Caranya klik kanan pada project di Solution Explorer kemudian pilih Add > New Item…

Kemudian pada Visual C# Items pilih Windows Forms kemudian pilih Windows Form, isi nama form pada Name contoh disini FormUser.cs seperti pada gambar berikut

Disini rencananya saya akan membuat form input data User yang digunakan untuk keperluan login. Jadi tambahkan komponen label, textbox dan button pada form tersebut sehingga seperti gambar berikut. Karena hanya untuk login maka kita hanya butuh username dan password. Komponen-komponennya adalah:

  • Username (label dan textbox) untuk isian username
  • Password (label dan textbox) untuk isian password
  • Confirm (label dan textbox) untuk isian konfirmasi password
  • Tombol Add untuk tambah data
  • Tombol Edit untuk edit data
  • Tombol Delete untuk hapus data
  • label1 untuk status action atau proses berkaitan dengan tombol apa yang diklik (bernilai 0 untuk nilai default, 1 untuk tambah data dan 2 untuk edit data)

Ketiga

Setelah selesai design form, saatnya kita masuk ke pemrograman atau coding. Untuk memasuki wilayah coding, kita bisa klik kanan pada form (FormUser.cs) di Solution Explorer atau klik ganda pada pada form. Biasanya akan dibuatkan fungsi baru namanya [NamaForm]_Load, langsung saja kebagian using, kemudian tambahkan script ini

using System.Configuration;
using System.Collections;
using System.Collections.Specialized;

Kemudian tambahkan script ini setelah public partial class FormUser : Form {

        private DataUser conDB;

Kemudian update public FormUser() dengan script ini

       public FormUser()
        {
            InitializeComponent();
            NameValueCollection keyconfig = ConfigurationManager.GetSection("ApplicationSettings") as NameValueCollection;
            string workPath = keyconfig["WorkDir"].ToString();
            workPath = workPath == "" ? System.IO.Path.GetDirectoryName(Application.ExecutablePath) : workPath;
            conDB = new DataUser();
            conDB.Path = @"" + workPath + "\\User.dll";
        }

Script diatas untuk mengambil variabel dari file config (WorkDir) dan untuk deklarasi class DataUser yang sudah dibuat sebelumnya. Kemudian tutup coding anda.

Kemudian klik ganda pada tombol Add kemudian copy-kan script berikut

        private void button6_Click(object sender, EventArgs e)
        {
            if (button6.Text == "Add") 
            {
                txtUserName.ReadOnly = false;
                txtPassword.ReadOnly = false;
                txtConfirm.ReadOnly = false;
                txtUserName.TabStop = true;
                txtPassword.TabStop = true;
                txtConfirm.TabStop = true;

                txtUserName.Text = "";
                txtPassword.Text = "";
                txtConfirm.Text = "";
                label1.Text = "1";
                button6.Text = "Save";
                button4.Text = "Cancel";
            }
            else
            {
                string strError = "";
                if (txtUserName.Text.ToString().Trim() == "")
                {
                    strError = "User Name";
                }

                if (txtPassword.Text.ToString().Trim() == "")
                {
                    strError = (strError.Trim() == "" ? "" : strError + ", ") + "Password";
                }

                if (txtConfirm.Text.ToString().Trim() == "")
                {
                    strError = (strError.Trim() == "" ? "" : strError + ", ") + "Confirm";
                }

                if (strError != "")
                {
                    MessageBox.Show(strError + " is required field", "Error", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                    return;
                }

                if (txtPassword.Text.ToString().Trim() != txtConfirm.Text.ToString().Trim())
                {
                    MessageBox.Show("Password not equal Confirm !", "Error", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                    return;
                }
                if (label1.Text == "1")
                {
                    if (conDB.Find(txtUserName.Text.ToString()))
                    {
                        MessageBox.Show("Duplicate User!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                        return;
                    }
                    else
                    {
                        conDB.Insert(txtUserName.Text, Modules.Encrypt(txtPassword.Text));
                        MessageBox.Show("User saved", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                }
                txtUserName.ReadOnly = true;
                txtPassword.ReadOnly = true;
                txtConfirm.ReadOnly = true;
                txtUserName.TabStop = false;
                txtPassword.TabStop = false;
                txtConfirm.TabStop = false;

                button6.Text = "Add";
                button4.Text = "Edit";
                label1.Text = "0";
            }
        }

Kenapa harus buka-tutup coding, alasannya sepele yaitu agar bisa terbuat fungsi secara otomatis

Nama fungsi button6_Click dan button4_Click bergantung dengan pemberian nama pada tombol. Kebetulan nama tombol yang saya buat adalah :

button6 yang nantinya akan mempunyai 3 fungsi yaitu:

  • Tombol Add untuk mengosongkan tampilan dan mengubah nilai label1 menjadi 1
  • Tombol Save untuk menyimpan data baru
  • Tombol Update untuk menyimpan data hasil edit

button4 mempunyai 2 fungsi yaitu:

  • Tombol Edit untuk mengubah nilai label1 menjadi 2
  • Tombol Cancel untuk membatalkan Add dan Edit

Keempat

Silakan dijalankan, tampilannya akan seperti gambar berikut

Setelah klik tombol Add tampilannya akan seperti ini

Terakhir

Sampai disini sudah selesai untuk Tutorial .Net C# – Membuat CRUD dengan Database Text File. Tutorial berikutnya adalah CRUD lanjutan yaitu Pencarian (Find), Edit dan Delete.

Atau kalau sudah ada gambaran silakan dilanjutkan dan dikembangkan lagi

Mudah-mudahan bermanfaat.

Share

You may also like...

1 Response

  1. You ought to take part in a contest for one of the best websites on the net. I am going to highly recommend this website!

Leave a Reply

Your email address will not be published. Required fields are marked *