• Tidak ada hasil yang ditemukan

Membuat Database Mahasiswa mengguakan XML

N/A
N/A
Protected

Academic year: 2021

Membagikan "Membuat Database Mahasiswa mengguakan XML"

Copied!
20
0
0

Teks penuh

(1)
(2)

Membuat Database Mahasiswa mengguakan

XML

Oleh: Sendy PK

Halo Pecinta Coding pada tutorial kali ini kita akan membuat program

yang berguna untuk memanfaatkan file XML (eXtensible Markup Language)

sebagai media penyimpanan data (database). Deskripsi Programnya adalah

sebagai berikut : • Program berguna menggunakan XML sebagai database.

&bull...

Halo Pecinta Coding pada tutorial kali ini kita akan membuat program yang berguna untuk

memanfaatkan file XML (eXtensible Markup Language) sebagai media penyimpanan data (database).

Deskripsi Programnya adalah sebagai berikut :

• Program berguna menggunakan XML sebagai database. • Database yang akan dibuat adalah database data mahasiswa.

• User bisa melakukkan proses penambahan, peng-editan, penghapusan, dan pencarian data.

Pertama kita akan melakukan desain pada user interface, langkah-langkahnya adalah sebagai berikut :

Buat project baru dengan nama databaseXML, simpan di folder 2. Masukkan ke dalam Form1

(3)

komponen-komponen yang dibutuhkan sebagai berikut. 2 buah Label , 2 buah TextBox , dan 6 buah Button

Setelah itu masukkan lagi satu buah komponen tambahan yaitu DataGrid. Caranya adalah, pada

Toolbox, klik kanan disembarang tempat pada bagian Data, pilih Choose Items... Lihat gambar

di bawah ini

Akan muncul kotak dialog Choose Toolbox Items. Pilih tab .NET Framework Components. Lalu centang DataGrid, karena ada beberapakomponen dengan nama DataGrid, hanya centang DataGrid d e n g a n n a m e s p a c e S y s t e m . W i n d o w s . F o r m s d a n m e m i l i k i A s s e m b l y N a m e

System.Windows.Forms (2.0.0.0). Hilangkan centang DataGrid selainitu. Lalu tekan OK.

(4)

Kemudian masukkan komponen DataGrid tersebut ke dalam Form1, bersama dengan komponen-komponen yang telah dimasukkan sebelumnya. Atur tata letaknya kira-kira seperti pada gambar di bawah ini

(5)

Untuk langkah selanjutnya, kita akan mengubah semua nilai properties pada masing-masing objek yang ada pada Form1, termasuk nilai properties Form1 itu sendiri. Untuk mengetahui komponen dan properties yang mana yang akan diubah, dan apa nilainya, silahkan Anda lihat pada Tabel di

(6)

Selanjutnya kita akan melakukan pengaturan lebih lanjut untuk dataGrid1. Langkah-langkah pengaturan lanjutan dataGrid1 adalah sebagai berikut:

Klik satu kali pada komponen dataGrid1, lalu klik pada lambang panah kecil yang ada di sudut kanan atas komponen dataGrid1. Lalu pilih AutoFormat... Seperti yang terlihat pada gambar di bawah ini.

(7)

Selanjutnya kita akan membuat File XML sebagai databasenya Langkah-langkah membuat file XML adalah sebagai berikut:

Buat file XML baru dengan cara tekan tombol , pilih Add New Item... Atau cukup dengan menekan kombinasi tombol Ctrl + Shift + A.Maka akan tampil kotak dialog Add New Item. Lihat Gambar di

bawah ini

Pada kotak dialog tersebut, pilih XML File dan isi dengan nama dataMahasiswa.xml, klik tombol

(8)

Setelah itu, pada file XML yang baru kita buat, ketikkan kode berikut ini. <?xml version="1.0" encoding="utf-8" ?> <dbMahasiswa> <tblMahasiswa> <nim>222222</nim> <nama>Rama</nama> </tblMahasiswa> <tblMahasiswa> <nim>232323</nim> <nama>Joko</nama> </tblMahasiswa> </dbMahasiswa>

Selanjutnya adalah coding, Langkah-langkah melakukan coding form utama adalah sebagai berikut: Klik satu kali pada Form1, lalu tekan tombol F7, ketikkan kode di bawah using System.Windows.Forms; Seperti berikut ini.

using System.Windows.Forms; using System.Xml;

Keterangan Program:

Baris 2: memanggil namespace lain dengan menggunakan perintah using. Pada program ini

namespace yang dipanggil adalah using System.Xml.

(9)

private void Form1_Load(object sender, EventArgs e) {

XMLKeDataGrid("dataMahasiswa.xml"); }

Keterangan Program:

Baris 3: memanggil method dengan nama XMLKeDataGrid(). Sedangkan dataMahasiswa.xml

adalah file XML yang digunakan.

Langkah selanjutnya, klik dua kali pada txtNim, lalu ketikkan kode di bawah ini. private void txtNim_TextChanged(object sender, EventArgs e) { if (txtNim.Text.Length <= 0) { txtNama.Enabled = false; cmdCari.Enabled = false; cmdSimpan.Enabled = false; cmdUpdate.Enabled = false; cmdHapus.Enabled = false; } else { txtNama.Enabled = true; cmdCari.Enabled = true; cmdHapus.Enabled = true; if (txtNama.Text.Length <= 0) { cmdSimpan.Enabled = false; cmdUpdate.Enabled = false; } else {

if (txtNim.ReadOnly == false) cmdSimpan.Enabled = true; else cmdSimpan.Enabled = false;

cmdUpdate.Enabled = true; }

} }

Keterangan Program:

Baris 3: periksa apakah panjang teks yang diinput pada TextBox txtNama kurang dari atau sama

dengan 0. Artinya masih kosong. Jika benar, makajalankan baris perintah 5-6. Namun, jika salah, jalankan baris perintah10-12.

Baris 5-6: disable / non-aktifkan komponen-komponen berikut ini. cmdSimpan, dan cmdUpdate.

Baris 10-11: periksa apakah txtNim tidak dalam status ReadOnly. Jikabenar, maka aktifkan

(10)

tombol cmdSimpan. Akan tetapi, jika salah, nonaktifkantombol cmdSimpan. Baris 25: aktifkan tombol cmdUpdate.

Setelah itu, klik dua kali pada cmdSimpan, lalu ketikkan kode berikut ini. private void cmdSimpan_Click(object sender, EventArgs e) {

XmlDocument xmlDoc = new XmlDocument(); // read file XML

xmlDoc.Load("dataMahasiswa.xml");

// ambil first child dari document xml (Child 'dbMahasiswa') XmlNode xmlRoot = xmlDoc.DocumentElement;

string strNIM = txtNim.Text;

ClassXML objClassXML = new ClassXML();

bool dataDitemukan = objClassXML.cekApakahNIMAda(xmlRoot, strNIM);

if (dataDitemukan == false) {

// buat node baru dengan nama parent 'tblMahasiswa' // child 'nimNode' dan 'namaNode'

XmlNode tblMahasiswaNode = xmlDoc.CreateElement("tblMahasiswa");

//xmlRoot.AppendChild(tblMahasiswaNode); xmlRoot.PrependChild(tblMahasiswaNode);

XmlNode nimNode = xmlDoc.CreateElement("nim");

nimNode.AppendChild(xmlDoc.CreateTextNode(txtNim.Text)); tblMahasiswaNode.AppendChild(nimNode);

XmlNode namaNode = xmlDoc.CreateElement("nama");

namaNode.AppendChild(xmlDoc.CreateTextNode(txtNama.Text)); tblMahasiswaNode.AppendChild(namaNode);

// simpan ke dalam file XML

bool hasil = objClassXML.simpanKeFileXML(xmlDoc, "dataMahasiswa.xml");

if (hasil == true)

MessageBox.Show("Data berhasil disimpan", "PESAN"); else

MessageBox.Show("Data gagal disimpan", "PESAN"); }

else { MessageBox.Show("Maaf NIM yang Anda inputkan sudah ada", "PESAN"); }

(11)

}

Keterangan Program:

Baris 3-8: keterangannya sama dengan baris 3-8 pada langkah sebelumnya.

Baris 9: periksa apakah variabel dataDitemukan bernilai false. Jika benar, maka jalankan baris

perintah 11-23 Namun, jika salah, jalankan baris perintah 25.

Baris 11: membuat node dengan nama childYangAkanDiUpdate, yang berguna untuk

menampung nilai kembalian yang berupa node, hasil dari method AmbilChildYangDimaksud(). Baris 12: membuat node baru dengan nama tblMahasiswa. Dimana node yang baru dibuat

tersebut akan disimpan pada tblMahasiswaNode.

Baris 13: menumpuk / menimpa / mengganti node yang lama yaitu node childYangAkanDiUpdate

dengan node baru yang ada pada tblMahasiswaNode.

Baris 14: membuat node baru dengan nama nim. Dimana node yang baru dibuat tersebut akan

disimpan pada nimNode.

Baris 14: memasukkan isi dari TextBox txtNim ke dalam nimNode.

Baris 16: menambahkan / memasukkan / menyisipkan node yang ada pada nimNode, pada posisi

node paling akhir (last child) dari node tblMahasiswaNode.

Baris 17: membuat node baru dengan nama nama. Dimana node yang baru dibuat tersebut akan

disimpan pada namaNode.

Baris 18: memasukkan isi dari TextBox txtNama ke dalam namaNode.

Baris 19: menambahkan / memasukkan / menyisipkan node yang ada pada namaNode, pada posisi

node paling akhir (last child) dari node tblMahasiswaNode.

Baris 20: mendeklarasikan variabel boolean dengan nama hasil, yang berguna untuk menampung

nilai kembalian dari method simpanKeFileXML().

Baris 21-23: periksa apakan variabel hasil, bernilai true. Jika benar, maka tampilkan pesan “Data

berhasil diupdate”. Akan tetapi, jika salah, pesan yang akan tampil adalah “Data gagal diupdate”. Baris 24: menampilkan pesan “Data yang akan diupdate tidak ada”.

Baris 26: memanggil method ResetSemua().

Klik dua kali pada cmdHapus, lalu ketikkan kode yang berikut ini.

private void cmdHapus_Click(object sender, EventArgs e) {

XmlDocument xmlDoc = new XmlDocument(); // read file XML

xmlDoc.Load("dataMahasiswa.xml");

// ambil first child dari document xml (Child 'dbMahasiswa') XmlNode xmlRoot = xmlDoc.DocumentElement;

string strNIM = txtNim.Text;

ClassXML objClassXML = new ClassXML();

bool dataDitemukan = objClassXML.cekApakahNIMAda(xmlRoot, strNIM);

if (dataDitemukan == true) {

(12)

XmlNode childYangAkanDiHapus =

objClassXML.AmbilChildYangDimaksud(xmlRoot, strNIM);

xmlRoot.RemoveChild(childYangAkanDiHapus); // simpan ke dalam file XML

bool hasil = objClassXML.simpanKeFileXML(xmlDoc, "dataMahasiswa.xml");

if (hasil == true)

MessageBox.Show("Data berhasil dihapus", "PESAN"); else

MessageBox.Show("Data gagal dihapus", "PESAN"); }

else { MessageBox.Show("Data yang akan dihapus tidak ada", "PESAN"); }

ResetSemua(); }

Keterangan Program:

Baris 3-8: keterangannya sama dengan baris 3-8 pada langkah sebelumnya

Baris 9: periksa apakah variabel dataDitemukan bernilai false. Jika benar, maka jalankan baris

perintah 11-16 Namun, jika salah, jalankan baris perintah 18.

Baris 11: membuat node dengan nama childYangAkanDiHapus, yang berguna untuk menampung

nilai kembalian yang berupa node, hasil dari method AmbilChildYangDimaksud().

Baris 12: menghapus node yang ada pada childYangAkanDiHapus, dengan menggunakan

method RemoveChild().

Baris 13: mendeklarasikan variabel boolean dengan nama hasil, yang berguna untuk menampung

nilai kembalian dari method simpanKeFileXML().

Baris 14-16: periksa apakan variabel hasil, bernilai true. Jika benar, maka tampilkan pesan “Data

berhasil dihapus”. Akan tetapi, jika salah, pesan yang akan tampil adalah “Data gagal dihapus”. Baris 18: menampilkan pesan “Data yang akan dihapus tidak ada”.

Baris 19: memanggil method ResetSemua().

Pada langkah ini kita akan membuat kode yang berguna untuk memanggil method ResetSemua(). Klik dua kali cmdReset, lalu ketikkan kodenya.

private void cmdReset_Click(object sender, EventArgs e) {

ResetSemua(); }

Dan kode berikut berguna untuk menutup aplikasi, yaitu kode untuk tombol dengan nama

cmdKeluar.

private void cmdKeluar_Click(object sender, EventArgs e) {

this.Close(); }

(13)

Sekarang kita akan membuat method yang akan kita gunakan pada program kita tadi. Method yang pertama akan kita buat adalah XMLKeDataGrid(). Berguna untuk menampilkan isi file XML ke dalam komponen DataGrid dgTabelMhs. Berikut kodenya.

private void XMLKeDataGrid(string fileXML) {

DataSet objDataSet = new DataSet();

objDataSet.ReadXml(fileXML, XmlReadMode.InferSchema); dgTabelMhs.SetDataBinding(objDataSet, "tblMahasiswa"); }

Keterangan Program:

Baris 3: membuat objek baru dengan nama objDataSet, yang berguna sebagai media penampung

data sementara di dalam memory.

Baris 4: membaca isi file XML. Nama file XML yang akan dibaca isinya terdapat pada variabel

fileXML. Dan mode pembacaan file XML yang digunakan adalah InferSchema.

Selanjutnya method yang akan kita buat adalah ResetSemua(). Berguna untuk mengembalikan

setting / kondisi beberapa komponen, kembali seperti keadaan pada saat program pertama kali dijalankan. Berikut kodenya.

private void ResetSemua() { txtNim.Text = ""; txtNim.Focus(); txtNim.ReadOnly = false; txtNim.BackColor = Color.FromKnownColor(KnownColor.Window); txtNama.Text = ""; txtNama.Enabled = false; cmdSimpan.Enabled = false; cmdUpdate.Enabled = false; cmdHapus.Enabled = false; XMLKeDataGrid("dataMahasiswa.xml"); } Keterangan Program:

Baris 3-6: adalah pengaturan untuk komponen TextBox txtNim. Pengaturan yang dilakukan adalah

sebagai berikut. Kosongkan isinya, ubah fokus kursor ke txtNim, ubah statusnya menjadi TIDAK ReadOnly lagi, dan terakhir ubah warna background-nya menjadi warna background client area dari window.

Baris 7 & 8: adalah pengaturan untuk komponen TextBox txtNama. Pengaturan yang dilakukan

adalah sebagai berikut. Kosongkan isinya, dan non-aktifkan komponen tersebut.

Baris 9-11: non-aktifkan komponen tombol, yaitu cmdSimpan, cmdUpdate, dan cmdHapus.

Baris 12: panggil method XMLKeDataGrid(). Dengan file XML yang digunakan adalah

(14)

Selanjutny kita akan membuat kelas baru Langkah-langkah untuk membuat class sendiri adalah sebagai berikut:

Buat class baru dengan menekan kombinasi tombol Ctrl + Shift + A. Maka akan tampil kotak dialog Add New Item. lalu pilih Class dan isi dengan nama ClassXML.cs, klik tombol Add.

Setelah itu akan tercipta file class baru yang kita buat tadi. Tambahkan kode ini pada bagian awal, sebelum namespace. using System; using System.Collections.Generic; using System.Text; using System.Windows.Forms; using System.Xml; namespace cobaXMLDenganInput { Keterangan Program:

Baris 4: memanggil namaspace System.Windows.Forms, yang bertugas menangani

komponen-komponen form.

Baris 5: memanggil namaspace System.Xml, yang bertugas menangani method-method yang

berhubungan dengan file XML.

Selanjutnya, pada class classXML tersebut akan kita buat tiga buah method, masing-masing dengan nama sebagai berikut. simpanKeFileXML(), cekApakahNIMAda(), dan yang terakhir adalah method AmbilChildYangDimaksud().

Method pertama yang akan dibuat adalah simpanKeFileXML(). Ketikkan kode berikut di dalam class classXML.

(15)

public bool simpanKeFileXML(XmlDocument xmlDoc, string namaFileXML)

{

XmlTextWriter objSimpanXML = new XmlTextWriter(namaFileXML, null); objSimpanXML.Formatting = Formatting.Indented; objSimpanXML.Indentation = 4; try { xmlDoc.Save(objSimpanXML); return true; } catch (XmlException e) { MessageBox.Show(e.ToString(), “Error!!!”); return false; } finally { objSimpanXML.Close(); } } Keterangan Program:

Baris 1: membuat method dengan nama simpanKeFileXML(), yang memiliki nilai kembalian

bertipe boolean, dan dua buah parameter yaitu xmlDoc dan namaFileXML.

Baris 3: membuat objek dengan nama objSimpanXML, yang bertugas untuk menulis ke dalam file

XML. Variabel namaFileXML, berisikan nama file XML yang akan kita tulisi. Dan parameter null, digunakan karena encoding yang digunakan pada file XML kita adalah utf-8 (coba lihat lagi file XML dataMahasiswa.xml).

Baris 4: menentukan bagaimana format keluaran dari file XML. Dan karena yang format yang

dipakai adalah Formatting.Indented, maka output file XML kita, akan tersusun dengan pola menjorok ke dalam (indent) pada setiap level / child / node-nya.

Baris 5: men-set nilai indent sebesar 4 point.

Baris 6-15: mencoba untuk menyimpan file XML. Jika sukses, kembalikan nilai true. Akan tetapi,

jika gagal, tampilkan pesan kesalahan / error yang terjadi, dan juga kembalikan nilai false. Baris 16-19: baris ini akan tetap dijalankan walau apapun yang terjadi. Kode yang dieksekusi

berguna untuk menutup XmlTextWriter yang bernama objSimpanXML.

Selanjutnya method yang akan dibuat adalah cekApakahNIMAda(), yang berguna untuk memeriksa apakah data dengan nim yang tercantum pada parameter strNIM1 sudah ada atau belum. Ketikkan kode berikut tepat di bawah method yang telah kita buat pada langkah sebelumnya.

private bool dataDitemukan = false;

public bool cekApakahNIMAda(XmlNode xmlRoot, string strNIM1)

{ int i;

(16)

for (i = 0; i < xmlRoot.ChildNodes.Count; i++) {

if (xmlRoot.ChildNodes.Item(i).NodeType == XmlNodeType. Element)

{

XmlNode data = xmlRoot.ChildNodes.Item(i);

string strNIM2 = data.ChildNodes.Item(0).FirstChild. Value; if (strNIM1 == strNIM2) { dataDitemukan = true; break; } } } return dataDitemukan; } Keterangan Program:

Baris 1: mendeklarasikan variabel boolean dengan nama dataDitemukan, dan langsung di-set

dengan nilai false.

Baris 2: membuat method dengan nama cekApakahNIMAda(), yang memiliki nilai kembalian

bertipe boolean, dan dua buah parameter yaitu xmlRoot dan strNIM1. Baris 4: mendeklarasikan variabel integer dengan nama i.

Baris 5: men-set variabel dataDitemukan dengan nilai false.

Baris 6: lakukan proses perulangan sebanyak jumlah child yang ada pada xmlRoot.

Baris 8: periksa apakah tipe node pada posisi i adalah Element. Jika benar, maka jalankan kode

pada baris 10-16.

Baris 10: membuat variabel penampung node dengan nama data. Lalu ambil child / node dari

xmlRoot pada posisi / index i.

Baris 11: ambil isi / value dari child nim (child nim ditunjukkan oleh Item(0)). Yang ada pada node

data. Lalu simpan ke variabel strNIM2.

Baris 12-16: bandingkan apakah isi dari variabel strNIM1 sama dengan isi variabel strNIM2. Jika

sama, set nilai variabel dataDitemukan menjadi true, lalu hentikan proses perulangan dengan menggunakan perintah break.

Baris 19: kembalikan nilai dari variabel dataDitemukan.

Dan untuk yang terakhir, method yang akan dibuat adalah Am ilChildYangDimaksud(), yang berguna untuk mengambil child / node yang berada pada posisi yang benar. Posisi node tersebut tergantung pada proses perbandingan parameter strNIM1 dengan strNIM2.

public XmlNode AmbilChildYangDimaksud(XmlNode xmlRoot, string strNIM1)

{

XmlNode childYangDiKehendaki = xmlRoot; int i;

for (i = 0; i < xmlRoot.ChildNodes.Count; i++) {

(17)

Element) {

XmlNode data = xmlRoot.ChildNodes.Item(i);

string strNIM2 = data.ChildNodes.Item(0).FirstChild. Value; if (strNIM1 == strNIM2) { childYangDiKehendaki = data; break; } } } return childYangDiKehendaki; } Keterangan Program:

Baris 1: membuat method dengan nama AmbilChildYangDimaksud(), yang memiliki nilai

kembalian XmlNode, dan dua buah parameter yaitu xmlRoot dan strNIM1.

Baris 3: isi node childYangDiKehendaki dengan xmlRoot. Supaya pada saat return selalu ada

isinya.

Baris 4: mendeklarasikan variabel integer dengan nama i.

Baris 5: lakukan proses perulangan sebanyak jumlah child yang ada pada xmlRoot.

Baris 7: periksa apakah tipe node pada posisi i adalah Element. Jika benar, maka jalankan kode

pada baris 10-16.

Baris 9: membuat variabel penampung node dengan nama data. Lalu ambil child / node dari

xmlRoot pada posisi / index i.

Baris 10: ambil isi / value dari child nim (child nim ditunjukkan oleh Item(0)). Yang ada pada node

data. Lalu simpan ke variabel strNIM2.

Baris 11-15: bandingkan apakah isi dari variabel strNIM1 sama dengan isi variabel strNIM2. Jika

sama, set nilai variabel dataDitemukan menjadi true, lalu hentikan proses perulangan dengan menggunakan perintah break.

Baris 18: kembalikan node yang ada pada childYangDiKehendaki.

Sebelum program dijalankan, copy-kan terlebih dahulu file dataMahasiswa.xml, ke dalam folder

debug yang ada pada folder project kita. Tekan tombol F5. Maka program akan dijalankan maka

(18)

Setelah tampil seperti gambar di atas, untuk memasukkan data baru, silahkan isi NIM dan Nama. Lalu tekan tombol Simpan Baru .seperti gambar di bawah ini.

Untuk meng-update data, masukkan NIM di NIM, tekan tombol Cari. Jika data ditemukan, silahkan ubah yang diperlukan. Yang bisa diubah hanya Nama saja, NIM tidak bisa. Setelah itu tekan tombol

(19)

Untuk menghapus data, masukkan NIM di NIM, tekan tombol Cari. Jika data ditemukan, tekan tombol Hapus. Seperti gambar di bawah ini

Tekan tombol Reset, untuk kembali ke kondisi awal program. Tekan tombol Keluar, untuk menutup aplikasi.

Sekian Tutorial kali ini, sampai jumpa di tutorial selanjutnya, Salam Jago Coding, kalian

(20)

Tentang Penulis

Sendy PK

Saya adalah Programmer yang memiliki impian untuk menguasai dunia kunjungi situs pribadi saya di www.spk.my.id dan Online Shop saya di www.spkshop.web.id

Referensi

Dokumen terkait

Persentase kebutuhan dosen akan aplikasi yang dapat membantu merancang dan mengelola content dari situs web pribadinya Persentase dosen yang memerlukan aplikasi untuk

TRIANA   ASIH   –MODEL   PANDUAN PEMBELAJARAN…..

Panggung Kota Tegal Tahun Anggaran 2016 dalam waktu 3 (tiga) hari setelah pengumuman pemenang, terhitung mulai hari Sabtu tanggal 27 Agustus 2016 sampai dengan hari Senin tanggal

Aturan-aturan telah menjadi landasan bagi KJRI Davao City dalam mengeluarkan kebijakan dan upaya-upaya untuk menyelesaikan permasalahan masyarakat keturunan Indonesia di

Pemohon memahami proses asesmen untuk skema Klaster Perawatan Pencegahan ( Preventive Maintenance ) Alat Berat Big Bulldozer yang mencakup persyaratan dan ruang

Berdasarkan hasil observasi yang telah dilakukan ditemukan media pembelajaran yang berupa modul akan tetapi modul ini hanya berupa file dan belum dikemas dengan

Penelitian ini bertujuan untuk membandingkan efektivitas perasan jeruk purut ( Citrus hystrix Dc ) dengan zinc pyrithione 1% secara in vitro terhadap pertumbuhan P.ovale

Firmware OpenWRT terdiri dari dua versi yaitu White-Russian dan Kamikaze, dan yang akan digunakan pada wireless router ini adalah versi White- Russian 0.9, versi ini dipilih