Anda di halaman 1dari 38

Aplikasi Database Sederhana Menggunakan JAVA NetBeans

November 28, 2010 in tutorial Mungkin tulisan mengenai membuat aplikasi database sudah banyak ditemukan di internet,,, walaupun begitu ketika mengerjakan tugas kuliah yang menyangkut database saya sangat susah menemukan tutorial yang cocok,, kenapa??? mungkin karna masih sedikit yang memahami pembuatan aplikasi database menggunakan metode yang saya gunakan (dengan EclipdeLink),,,termasuk teman-teman ilkom (bisa dibilang tidak ada).. ntuk membuat suatu aplikasi database di ja!a kita bisa menggunakan beberapa metode,,, yaitu dengan menggunakan metode kon"ensional yang sudah banyak beredar, dengan #ibernate, dan dengan EclipseLink.. $ada tulisan ini saya menggunakan EclipseLink yang sudah mendukung %$& '.(,, sedangkan hibernate

pada saat itu hanya mendukung jpa ).( pada netbeans., menurut sumber yang terpercaya menyebutkan bahwa menggunakan teknik ini mempunyai beberapa kelebihan daripada menggunakan metode kon!ensional yang ada* &pa itu %$&?? Maa" saya tidak akan membahas masalah itu disini,, mungkin lain kali.. ntuk memulai pembutan aplikasi di +omputer anda harus ter-install ,etbeans dan My-.L, pada aplikasi ini saya menggunakan ,etbeans /.0.. &nda diharapkan telah mengerti cara membuat database menggunakan My-.L* $ertama buatlah sebuah database bernama 12ata3ase4 atau terserah anda,, kemudian buatlah sebuah tabel atau entitas bernama 1Mahasiswa4 (ingat tabel harus mempunyai sebuah primary key) yang memiliki atribut5 ,ama, ,6$, 7anggal Lahir, dan &lamat.

Membuat Project File - Ne! Project, lalu pada bagian "ategories pilih Ja#a dan bagian Project pilihJa#a Application. 3eri nama
+emudian kita mulai membuat project %a!a &plication di ,etbeans, caranya5 project ini 1&plikasi4.

7ahap selanjutnya kita akan membuat entity class dimana class ini bertujuan untuk

$ile- ne! $ile% pada categories pilih Persistence selanjutnya pilih entit& classes $rom database %endela berikutnya pada database connection pilih ne! database connection kemudian ne't. +emudian isi sesuai gambar dibawah ini
mempresentasikan entity atau tabel dalam suatu database.. 8lass ini dibuat lewat

+lik ok, akan muncul jendela berikutnya dan klik button

Add All kemudian ne't. &kan muncul jendela berikutnya dan klik button creat persistence unit, ok, kemudian ne't. $ada collection pilih ja#a(util()ist dan klik button $inish.

3erikutnya kita akan membuat class persistence tility sebagai utilities yang membuat koneksi %$& atau EntityManager9actory5 package aplikasi; import javax.persistence.EntityManagerFactory; import javax.persistence.Persistence; public class persistenceUtility { public final static EntityManagerFactory entityManagerFactory; static { // parameter arus sama !engan nama Persistence Unit

// yang a!a pa!a file persistence.xml entityManagerFactory "

Persistence.createEntityManagerFactory#$%plikasiPU$&; ' public static EntityManagerFactory getEntityManagerFactory#& { return entityManagerFactory; ' ' -elanjutnya kita akan membuat tampilan dari aplikasi database ini,,

$ada combobo' cari berdasarkan,, ubahlah model pada property combobo: yang sebelumnya dengan nama dan nrp, dengan cara klik kanan pada combobo:, kemudian pada model yang sebelumnya berisikan item ), item ', item ;, item < ubah menjadi nama, nrp. &nd then ubahlah nama' komponen atau !ariabel seperti dibawah ini5

karna kita memakai 7abel sebagai antar mukanya,, maka kita harus membuat sebuah 7ableModel untuk mempermudah dalam menambah data dang mengambil data dari tabel. 3uatlah class baru bernama 7ableModel5 package aplikasi; import java.util.%rray(ist;

import java.util.)ollection; import java.util.(ist; import javax.s*ing.table.%bstract+ableMo!el; public class +ableMo!el exten!s %bstract+ableMo!el { private static final long serial,ersionU-. " /(; private (ist0Ma asis*a1 list " ne* %rray(ist0Ma asis*a1#&; public voi! up!ate%ll#)ollection0Ma asis*a1 m s& { list.clear#&; list.a!!%ll#m s&; fire+able.ata) ange!#&; ' public Ma asis*a get#int in!ex&{ return list.get#in!ex&; ' public voi! set.ata#(ist list& { t is.list " list; // memberi peringatan ke tabel ba *a !ata beruba fire+able.ata) ange!#&; ' public voi! insert#Ma asis*a m s& {list.a!!#m s&;

fire+able2o*s-nserte!#get2o*)ount#& 3 /4 get2o*)ount#& 3 /&; ' public voi! !elete#int in!ex& { list.remove#in!ex&; fire+able2o*s.elete!#in!ex4 in!ex&; ' public voi! up!ate#int in!ex4 Ma asis*a m s& {list.set#in!ex4 m s&; fire+able2o*sUp!ate!#in!ex4 in!ex&; ' public Ma asis*a select#int in!ex& { return list.get#in!ex&; ' public int get2o*)ount#& { return list.si5e#&; ' public int get)olumn)ount#& { return 6; ' public 7bject get,alue%t#int ro*-n!ex4 int column-n!ex& {

s*itc

#column-n!ex& { case 89 return list.get#ro*-n!ex&.get:ama#&; case /9 return list.get#ro*-n!ex&.get:rp#&; case ;9 return list.get#ro*-n!ex&.get+anggal(a ir#&; case <9 return list.get#ro*-n!ex&.get%lamat#&; !efault9 return null;

' =7verri!e public >tring get)olumn:ame#int column& { s*itc #column& { case 89 return $:ama$; case /9 return $:2P$; case ;9 return $+anggal la ir$;

case <9 return $%lamat$; !efault9 return null; ' ' ' -elanjutan kita tambahkan 7ableModel ke tampilan antarmuka, carannya masuk ke bagian source kemudian ubah konstruktor yang sebelunnya5 public ,ie*#& { init)omponents#&; ' Menjadi5 public ,ie*#& { init)omponents#&; tableMo!el " ne* +ableMo!el#&; +abel.setMo!el#tableMo!el&; ' 3erikutnya tambahan getter untuk semua komponen pada source antarmuka, ini berguna untuk controler yang akan buat selanjutnya. public ,ie*#& { init)omponents#&;

tableMo!el " ne* +ableMo!el#&; +abel.setMo!el#tableMo!el&; ' public ?@utton get@utton.elete#& { return Aapus; ' public ?@utton get@utton-nsert#& { return +amba ; ' public ?@utton get@uttonUp!ate#& { return E!it; ' public +ableMo!el get+ableMo!el#& { return tableMo!el; ' public ?+able get+able#& { return +abel; ' public ?+extFiel! get+ext:ama#& { return txt:ama; '

public ?+extFiel! get+ext:rp#& { return txt:rp; ' public ?>pinner get+anggal#& { return +anggal; ' public ?+ext%rea get%lmt#& { return %lamat; ' -elanjutnya kita akan membuat class 8ontroler. 8lass ini bertugas untuk melakukan semua proses manipulasi database. 3iasanya 8ontroller menyesuaikan dengan =iew, misal disini =iew memiliki tombol >,-E67, $2&7E dan 2ELE7E, artinya 8ontroller harus dapat menangani masalah >,-E67, $2&7E dan 2ELE7E tersebut. 3iasanya 8ontroller menyesuaikan dengan =iew, misal disini =iew memiliki tombol >,-E67, $2&7E dan 2ELE7E, artinya 8ontroller harus dapat menangani masalah >,-E67, $2&7E dan 2ELE7E tersebut. &pa hanya itu? 7>2&+? 7erdapat sebuah tabel pada =>ew yang sebelumnya kita buat, dan yang jadi pertanyaan bagaimana data yang ada dalam database bisa terlihat di table? &rtinya kita harus membuat si 8ontroller dapat menangani proses -ELE87. package aplikasi; import java.util..ate; import java.util.(ist; import javax.persistence.EntityManager; import javax.s*ing.?7ptionPane;

public class )ontroler {

private ,ie* vie*;

public )ontroler#,ie* vie*& { t is.vie* " vie*; ' public voi! insert#& { EntityManager manager "

PersistenceUtility.getEntityManagerFactory#&.createEntityManager#&; manager.get+ransaction#&.begin#&; try { // buat ma asis*a Ma asis*a m s " ne* Ma asis*a#&; // uba !ata ma asis*a

m s.set:ama#vie*.get+ext:ama#&.get+ext#&&; m s.set:rp#vie*.get+ext:rp#&.get+ext#&&; m s.set+anggal(a ir# #.ate& vie*.get+anggal#&.get,alue#&&; m s.set%lamat## vie*.get%lmt#&.get+ext#&&&; // simpan ke !atabase manager.persist#m s&; // simpa ke tablemo!el

vie*.get+ableMo!el#&.insert#m s&; manager.get+ransaction#&.commit#&; ' catc #+ ro*able t& {

t.print>tack+race#&; manager.get+ransaction#&.rollback#&; ' finally { manager.close#&; ' ' public voi! up!ate#& { // !apatkan baris yang terseleksi int in!ex " vie*.get+able#&.get>electe!2o*#&; // jika ti!ak a!a if #in!ex "" 3/& { // maka proses !ibatalkan ?7ptionPane.s o*Message.ialog#null4 $Pili !i3up!ateB$&; return; ' EntityManager manager " baris yang akan

PersistenceUtility.getEntityManagerFactory#&.createEntityManager#&;

manager.get+ransaction#&.begin#&; try { // men!apatkan ma asis*a !ari tablemo!el Ma asis*a m s " vie*.get+ableMo!el#&.select#in!ex&; // uba !ata ma asis*a

m s.set:ama#vie*.get+ext:ama#&.get+ext#&&; m s.set:rp#vie*.get+ext:rp#&.get+ext#&&; m s.set+anggal(a ir##.ate& vie*.get+anggal#&.get,alue#&&; m s.set%lamat## vie*.get%lmt#&.get+ext#&&&; // up!ate ma asis*a ke !atabase manager.merge#m s&; // up!ate ma asis*a ke tablemo!el vie*.get+ableMo!el#&.up!ate#in!ex4 m s&; manager.get+ransaction#&.commit#&; ' catc #+ ro*able t& {

t.print>tack+race#&; manager.get+ransaction#&.rollback#&; ' finally { manager.close#&; '

' public voi! !elete#& { // !apatkan baris yang terseleksi int in!ex " vie*.get+able#&.get>electe!2o*#&; // jika ti!ak a!a if #in!ex "" 3/& { ?7ptionPane.s o*Message.ialog#null4 $Pili !i3!eleteB$&; return;// maka proses !ibatalkan ' EntityManager manager " baris yang akan

PersistenceUtility.getEntityManagerFactory#&.createEntityManager#&; manager.get+ransaction#&.begin#&; try { // men!apatkan ma asis*a !ari tablemo!el Ma asis*a m s " vie*.get+ableMo!el#&.select#in!ex&; // meng apus ma asis*a !ari !atabase manager.remove#manager.merge#m s&&; // meng apus ma asis*a !ari tablemo!el vie*.get+ableMo!el#&.!elete#in!ex&; manager.get+ransaction#&.commit#&;

' catc

#+ ro*able t& {

t.print>tack+race#&; manager.get+ransaction#&.rollback#&; ' finally { manager.close#&; ' ' public voi! select#& { EntityManager manager "

PersistenceUtility.getEntityManagerFactory#&.createEntityManager#&; try { =>uppressCarnings#$unc ecke!$& (ist list " manager.createDuery #$select a from Ma asis*a a or!er by a.nrp$&.get2esult(ist#&; vie*.get+ableMo!el#&.up!ate%ll#list&; ' finally { manager.close#&; ' ' '

ntuk tahap berikutnya kita akan menambahkan aksi tombol 7ambah, #apus, Edit, dan 6e"resh. 2engan cara double klik tombol tersebut kemudian isikan kode beriut5 7ambah5 private voi! +amba %ctionPerforme!#java.a*t.event.%ctionEvent evt& { if#txt:ama.get+ext#&.eEuals#$$& FF txt:rp.get+ext#&.eEuals#$$& FF %lamat.get+ext#&.eEuals#$$& &{ arus !iisi

?7ptionPane.s o*Message.ialog#null4 $.ata !engan lengkapB$&; return; ' controler.insert#&; txt:ama.set+ext#$$&; txt:rp.set+ext#$$&; %lamat.set+ext#$$&; ' #apus5

private voi! Aapus%ctionPerforme!#java.a*t.event.%ctionEvent evt& { if #?7ptionPane.s o*)onfirm.ialog #t is4 $%n!a Gakin %kan Meng apus .ata Ma asis*aH$4 $Aapus Ma asi*a$4 ?7ptionPane.7IJ)%:)E(J7P+-7:& ""

?7ptionPane.)%:)E(J7P+-7:& { // batalkan aksi return; ' controler.!elete#&; txt:ama.set+ext#$$&; txt:rp.set+ext#$$&; %lamat.set+ext#$$&; ' Edit5 private voi! E!it%ctionPerforme!#java.a*t.event.%ctionEvent evt& { if#txt:ama.get+ext#&.eEuals#$$& FF txt:rp.get+ext#&.eEuals#$$& FF %lamat.get+ext#&.eEuals#$$& &{ arus !iisi apus

?7ptionPane.s o*Message.ialog#null4$.ata !engan lengkapB$&; return; ' controler.up!ate#&; txt:ama.set+ext#$$&; txt:rp.set+ext#$$&; %lamat.set+ext#$$&;

' 6e"resh5 private voi! refres %ctionPerforme!#java.a*t.event.%ctionEvent evt& { controler.select#&; ' 2an terakhir tambahkan aksi tombol 8ari,, dengan cara yang sama dan isikan kode berikut5 private voi! j@utton/%ctionPerforme!#java.a*t.event.%ctionEvent evt& { EntityManager manager "

PersistenceUtility.getEntityManagerFactory#&.createEntityManager#&; try { (ist list " manager.createDuery

#$select b from Ma asis*a b * ere $ K $b.$ K #>tring&cmb)ari.get>electe!-tem#&K $ like LM$ K txt)ari.get+ext#& K $ML$&.get2esult(ist#&; // tampilkan asil pencarian ke table

tableMo!el.set.ata##(ist& list&; ' catc #+ ro*able t& { // perli atkan error t.print>tack+race#&;

' finally { // tutup entitymanager manager.close#&; ' ' -ampai disini sebenarnya program kita sudah jadi,, tapi untuk membuat tabel pada program kita lebih interakti" maka tambahkan kode berikut pada konstruktor !iew atau tampilan antar mua program sehingga kontraktornya menjadi5 public ,ie*#& { init)omponents#&; tableMo!el " ne* +ableMo!el#&; +abel.setMo!el#tableMo!el&; controler " ne* )ontroler#t is&; //menampilkan !ata ma asis*a ketika program pertama kali !ijalankan refres %ctionPerforme!#null&; +abel.get>electionMo!el#&.a!!(ist>election(istener #ne* (ist>election(istener#& { public voi! value) ange!#(ist>electionEvent e& { // !apatkan baris yang terseleksi int baris " +abel.get>electe!2o*#&; // cek apaka baris terseleksi

if #baris B" 3/& { // jika terseleksi4 tampilkan !ata !i form // !apatkan ma asis*a !ari tabel Ma asis*a m s " tableMo!el.get#baris&; // tampilkan !ata !i form txt:ama.set+ext#m s.get:ama#&&; txt:rp.set+ext#m s.get:rp#&&; +anggal.set,alue#m s.get+anggal(a ir#&&; %lamat.set+ext#m s.get%lamat#&&; ' ' '&; ' &khirnya progam database sederhana telah selesai,,, kita tinggal menambahkan dri!er My-.L ke

libraries project kita kemudian pilih Add )ibrar&, selanjutnya pilih M& S*) JDB" Dri#er . 2an program database sederhana siap dijalankan*
dalam project.. 8aranya klik kanan pada @ampangkan****?? Malah lebih gampang dari cara yang biasa*.

8ontoh $rogram Manajemen 2atabase -ederhana dengan %a!a


9iled in5 2asar-dasar $emrograman&dd comments

"ontoh Program+ insert(ja#a import ja!a:.swing.AB import ja!a.awt.@ridLayoutB import ja!a.awt.e!ent.AB import ja!a.sCl.AB public class insert implements &ctionListener D %Label label,ama E new %Label(1nama54)B %7e:t9ield "ield,ama E new %7e:t9ield()()B %Label label,im E new %Label(1nim54)B %7e:t9ield "ield,im E new %7e:t9ield()()B %Label label$rodi E new %Label(1prodi54)B %7e:t9ield "ield$rodi E new %7e:t9ield()()B %Label label&lamat E new %Label(1alamat54)B %7e:t9ield "ield&lamat E new %7e:t9ield()()B %Label label+ota E new %Label(1kota54)B %7e:t9ield "ield+ota E new %7e:t9ield()()B %3utton tombol-impan E new %3utton(1simpan4)B %3utton tombol3atal E new %3utton(1batal4)B %$anel panel E new %$anel()B insert()D @ridLayout gl E new @ridLayout(/,')B panel.setLayout(gl)B panel.add(label,im)B panel.add("ield,im)B panel.add(label,ama)B panel.add("ield,ama)B panel.add(label$rodi)B panel.add("ield$rodi)B panel.add(label&lamat)B panel.add("ield&lamat)B panel.add(label+ota)B panel.add("ield+ota)B panel.add(tombol-impan)B panel.add(tombol3atal)B

tombol-impan.add&ctionListener(this)B tombol3atal.add&ctionListener(this)B %9rame "rame E new %9rame(1input data4)B "rame.set8ontent$ane(panel)B "rame.set-iFe(<((,'(()B "rame.set=isible(true)B GG"rame.set2e"ault8loseHperation(%9rame.EI>7JH,J8LH-E)B "rame.set6esiFable("alse)B K public !oid action$er"ormed(&ctionE!ent e!ent) D try D i"(e!ent.get-ource()EEtombol-impan) D -tring nama E "ield,ama.get7e:t()B -tring nim E "ield,im.get7e:t()B -tring prodi E "ield$rodi.get7e:t()B -tring alamat E "ield&lamat.get7e:t()B -tring kota E "ield+ota.get7e:t()B 8lass."or,ame(1com.mysCl.jdbc.2ri!er4)B -ystem.out.println(1dri!er %238 ditemukan*4)B GG-tring url E 1jdbc5mysCl5GGlocalhost5;;(/Gdbmahasiswa?userErootLpasswordEt;l(g(dh(g4B 8onnection koneksi E 2ri!erManager.get8onnection(1jdbc5mysCl5GGlocalhost5;;(/Gdbmahasiswa4, 1root4,4t;l(g(dh(g4)B -ystem.out.println(1koneksi sukses*4)B -tatement statement E koneksi.create-tatement()B -tring sCl E 1>,-E67 >,7H mahasiswa !alues (M4NnimN4M,O4NnamaN4M,O4NprodiN4M,O4NalamatN4M,O4NkotaN4M)B4B statement.e:ecute pdate(sCl)B "ield,ama.set7e:t(14)B "ield,im.set7e:t(14)B "ield$rodi.set7e:t(14)B "ield&lamat.set7e:t(14)B "ield+ota.set7e:t(14)B statement.close()B koneksi.close()B %Hption$ane.showMessage2ialog(panel, 1data sukses tersimpan*4)B K K

catch(E:ception e) D -ystem.out.println(1salah4)B K i"(e!ent.get-ource()EEtombol3atal)D "ield,ama.set7e:t(14)B "ield,im.set7e:t(14)B "ield$rodi.set7e:t(14)B "ield&lamat.set7e:t(14)B "ield+ota.set7e:t(14)B K K public static !oid main(-tringPQ args) D insert insert6ecord E new insert()B K K ,utput program+

tampilan program insert(ja#a "ontoh program+ update(ja#a import ja!a:.swing.AB import ja!a.awt.@ridLayoutB import ja!a.awt.e!ent.AB import ja!a.sCl.AB public class update implements &ctionListener D %7e:t9ield "ield8ari E new %7e:t9ield()()B %3utton tombol8ari E new %3utton(1cari4)B %Label label,ama E new %Label(1nama54)B %7e:t9ield "ield,ama E new %7e:t9ield()()B %Label label,im E new %Label(1nim54)B %7e:t9ield "ield,im E new %7e:t9ield()()B %Label label$rodi E new %Label(1prodi54)B %7e:t9ield "ield$rodi E new %7e:t9ield()()B

%Label label&lamat E new %Label(1alamat54)B %7e:t9ield "ield&lamat E new %7e:t9ield()()B %Label label+ota E new %Label(1kota54)B %7e:t9ield "ield+ota E new %7e:t9ield()()B %3utton tombol pdate E new %3utton(1update4)B %3utton tombol3atal E new %3utton(1batal4)B %$anel panel E new %$anel()B update()D @ridLayout gl E new @ridLayout(R,')B panel.setLayout(gl)B panel.add("ield8ari)B panel.add(tombol8ari)B panel.add(label,im)B panel.add("ield,im)B panel.add(label,ama)B panel.add("ield,ama)B panel.add(label$rodi)B panel.add("ield$rodi)B panel.add(label&lamat)B panel.add("ield&lamat)B panel.add(label+ota)B panel.add("ield+ota)B panel.add(tombol pdate)B panel.add(tombol3atal)B tombol8ari.add&ctionListener(this)B tombol pdate.add&ctionListener(this)B tombol3atal.add&ctionListener(this)B %9rame "rame E new %9rame(1update data4)B "rame.set8ontent$ane(panel)B "rame.set-iFe(<((,'(()B "rame.set=isible(true)B GG"rame.set2e"ault8loseHperation(%9rame.EI>7JH,J8LH-E)B "rame.set6esiFable("alse)B K public !oid action$er"ormed(&ctionE!ent e!ent) D try D i"(e!ent.get-ource() EE tombol pdate) D -tring nim E "ield,im.get7e:t()B

-tring nama E "ield,ama.get7e:t()B -tring prodi E "ield$rodi.get7e:t()B -tring alamat E "ield&lamat.get7e:t()B -tring kota E "ield+ota.get7e:t()B 8lass."or,ame(1com.mysCl.jdbc.2ri!er4)B -ystem.out.println(1dri!er %238 ditemukan*4)B GG-tring url E 1jdbc5mysCl5GGlocalhost5;;(/Gdbmahasiswa?userErootLpasswordEt;l(g(dh(g4B 8onnection koneksi E 2ri!erManager.get8onnection(1jdbc5mysCl5GGlocalhost5;;(/Gdbmahasiswa4, 1root4,4t;l(g(dh(g4)B -ystem.out.println(1koneksi sukses*4)B -tatement statement E koneksi.create-tatement()B -tring sClE 1 $2&7E mahasiswa set namaEO4NnamaN4M,prodiEO4NprodiN4M,alamatEO4NalamatN4M,kotaEO4NkotaN4M S#E6E nimEO4NnimN4M4B statement.e:ecute pdate(sCl)B "ield,ama.set7e:t(14)B "ield,im.set7e:t(14)B "ield$rodi.set7e:t(14)B "ield&lamat.set7e:t(14)B "ield+ota.set7e:t(14)B statement.close()B koneksi.close()B %Hption$ane.showMessage2ialog(panel, 1data telah ter-update*4)B K else i"(e!ent.get-ource() EE tombol3atal) D "ield,ama.set7e:t(14)B "ield,im.set7e:t(14)B "ield$rodi.set7e:t(14)B "ield&lamat.set7e:t(14)B "ield+ota.set7e:t(14)B K else i"(e!ent.get-ource() EE tombol8ari) D -tring cari E "ield8ari.get7e:t()B 8lass."or,ame(1com.mysCl.jdbc.2ri!er4)B -ystem.out.println(1dri!er %238 ditemukan*4)B GG-tring url E 1jdbc5mysCl5GGlocalhost5;;(/Gdbmahasiswa?userErootLpasswordEt;l(g(dh(g4B 8onnection koneksi E 2ri!erManager.get8onnection(1jdbc5mysCl5GGlocalhost5;;(/Gdbmahasiswa4,

1root4,4t;l(g(dh(g4)B -ystem.out.println(1koneksi sukses*4)B -tatement statement E koneksi.create-tatement()B -tring sCl E 1-ELE87 A 96HM mahasiswa S#E6E nim L>+E M4NcariN4M4B 6esult-et rs E statement.e:ecute.uery(sCl)B i"(rs.ne:t()) D "ield,im.set7e:t(rs.get-tring()))B "ield,ama.set7e:t(rs.get-tring('))B "ield$rodi.set7e:t(rs.get-tring(;))B "ield&lamat.set7e:t(rs.get-tring(<))B "ield+ota.set7e:t(rs.get-tring(T))B K else D %Hption$ane.showMessage2ialog(panel, 1nim 4 N cari N 4 tidak ditemukan4)B K statement.close()B koneksi.close()B K K catch(E:ception e) D -ystem.out.println(1terjadi kesalahan4)B K K public static !oid main(-tringPQ args) D update delete6ecord E new update()B K K ,utput program+

tampilan program update(ja#a "ontoh program+ delete(ja#a

import ja!a:.swing.AB import ja!a.awt.@ridLayoutB import ja!a.awt.e!ent.AB import ja!a.sCl.AB public class delete implements &ctionListener D %7e:t9ield "ield8ari E new %7e:t9ield()()B %3utton tombol8ari E new %3utton(1cari4)B %Label label,ama E new %Label(1nama54)B %7e:t9ield "ield,ama E new %7e:t9ield()()B %Label label,im E new %Label(1nim54)B %7e:t9ield "ield,im E new %7e:t9ield()()B %Label label$rodi E new %Label(1prodi54)B %7e:t9ield "ield$rodi E new %7e:t9ield()()B %Label label&lamat E new %Label(1alamat54)B %7e:t9ield "ield&lamat E new %7e:t9ield()()B %Label label+ota E new %Label(1kota54)B %7e:t9ield "ield+ota E new %7e:t9ield()()B %3utton tombol#apus E new %3utton(1hapus4)B %3utton tombol3atal E new %3utton(1batal4)B %$anel panel E new %$anel()B delete()D @ridLayout gl E new @ridLayout(R,')B panel.setLayout(gl)B panel.add("ield8ari)B panel.add(tombol8ari)B panel.add(label,im)B panel.add("ield,im)B panel.add(label,ama)B panel.add("ield,ama)B panel.add(label$rodi)B panel.add("ield$rodi)B panel.add(label&lamat)B panel.add("ield&lamat)B panel.add(label+ota)B panel.add("ield+ota)B panel.add(tombol#apus)B panel.add(tombol3atal)B

tombol8ari.add&ctionListener(this)B tombol#apus.add&ctionListener(this)B tombol3atal.add&ctionListener(this)B %9rame "rame E new %9rame(1delete data4)B "rame.set8ontent$ane(panel)B "rame.set-iFe(<((,'(()B "rame.set=isible(true)B GG"rame.set2e"ault8loseHperation(%9rame.EI>7JH,J8LH-E)B "rame.set6esiFable("alse)B K public !oid action$er"ormed(&ctionE!ent e!ent) D try D i"(e!ent.get-ource() EE tombol#apus) D -tring nim E "ield,im.get7e:t()B 8lass."or,ame(1com.mysCl.jdbc.2ri!er4)B -ystem.out.println(1dri!er %238 ditemukan*4)B GG-tring url E 1jdbc5mysCl5GGlocalhost5;;(/Gdbmahasiswa?userErootLpasswordEt;l(g(dh(g4B 8onnection koneksi E 2ri!erManager.get8onnection(1jdbc5mysCl5GGlocalhost5;;(/Gdbmahasiswa4, 1root4,4t;l(g(dh(g4)B -ystem.out.println(1koneksi sukses*4)B -tatement statement E koneksi.create-tatement()B -tring sCl E 12ELE7E 96HM mahasiswa S#E6E nimEO4NnimN4M4B statement.e:ecute pdate(sCl)B "ield,ama.set7e:t(14)B "ield,im.set7e:t(14)B "ield$rodi.set7e:t(14)B "ield&lamat.set7e:t(14)B "ield+ota.set7e:t(14)B statement.close()B koneksi.close()B %Hption$ane.showMessage2ialog(panel, 1data telah terhapus*4)B K else i"(e!ent.get-ource() EE tombol3atal) D "ield,ama.set7e:t(14)B "ield,im.set7e:t(14)B "ield$rodi.set7e:t(14)B "ield&lamat.set7e:t(14)B

"ield+ota.set7e:t(14)B K else i"(e!ent.get-ource() EE tombol8ari) D -tring cari E "ield8ari.get7e:t()B 8lass."or,ame(1com.mysCl.jdbc.2ri!er4)B -ystem.out.println(1dri!er %238 ditemukan*4)B GG-tring url E 1jdbc5mysCl5GGlocalhost5;;(/Gdbmahasiswa?userErootLpasswordEt;l(g(dh(g4B 8onnection koneksi E 2ri!erManager.get8onnection(1jdbc5mysCl5GGlocalhost5;;(/Gdbmahasiswa4, 1root4,4t;l(g(dh(g4)B -ystem.out.println(1koneksi sukses*4)B -tatement statement E koneksi.create-tatement()B -tring sCl E 1-ELE87 A 96HM mahasiswa S#E6E nim L>+E M4NcariN4M4B 6esult-et rs E statement.e:ecute.uery(sCl)B i"(rs.ne:t()) D "ield,im.set7e:t(rs.get-tring()))B "ield,ama.set7e:t(rs.get-tring('))B "ield$rodi.set7e:t(rs.get-tring(;))B "ield&lamat.set7e:t(rs.get-tring(<))B "ield+ota.set7e:t(rs.get-tring(T))B K else D %Hption$ane.showMessage2ialog(panel, 1nim 4 N cari N 4 tidak ditemukan4)B K statement.close()B koneksi.close()B K K catch(E:ception e) D -ystem.out.println(1terjadi kesalahan4)B K K public static !oid main(-tringPQ args) D delete delete6ecord E new delete()B K K

,utput program+

tampilan program delete(ja#a "ontoh program+ gabungan insert% delete% dan hapus -gabung(ja#a. import ja!a:.swing.AB import ja!a.awt.AB import ja!a.awt.e!ent.&ctionE!entB import ja!a.awt.e!ent.&ctionListenerB import ja!a.awt.9lowLayoutB public class gabung implements &ctionListener D %Menu3ar menu E new %Menu3ar()B %Menu menu9ile E new %Menu(19ile4)B %Menu>tem subMenu>nsert E new %Menu>tem(1>nsert 2ata4,O-O)B %Menu>tem subMenu2elete E new %Menu>tem(12elete 2ata4,O2O)B %Menu>tem subMenu pdate E new %Menu>tem(1 pdate 2ata4,O O)B %Menu>tem subMenu.uit E new %Menu>tem(1.uit4,O.O)B 8ontainer container E new 8ontainer()B %$anel panel E new %$anel()B gabung() D %9rame "rame E new %9rame(1%a!a 2ata3ase Manajemen -istem4)B "rame.set-iFe(/<(,<0()B "rame.set2e"ault8loseHperation(%9rame.EI>7JH,J8LH-E)B "rame.set%Menu3ar(menu)B menu9ile.setMnemonic(M9O)B subMenu>nsert.add&ctionListener(this)B subMenu2elete.add&ctionListener(this)B subMenu pdate.add&ctionListener(this)B subMenu.uit.add&ctionListener(this)B menu.add(menu9ile)B menu9ile.add(subMenu>nsert)B

menu9ile.add(subMenu2elete)B menu9ile.add(subMenu pdate)B menu9ile.add-eparator()B menu9ile.add(subMenu.uit)B menu.set-iFe(<((,)(()B menu.setLocation(/(,/()B menu.set=isible(true)B 9lowLayout "l E new 9lowLayout()B panel.setLayout("l)B "rame.set8ontent$ane(panel)B "rame.set=isible(true)B K public static !oid main(-tringPQ args) D gabung gabungan E new gabung()B K public !oid action$er"ormed(&ctionE!ent e!ent) D i"(e!ent.get-ource() EE subMenu>nsert) D "rame>nsert()B K else i"(e!ent.get-ource() EE subMenu2elete) D "rame2elete()B K else i"(e!ent.get-ource() EE subMenu pdate) D "rame pdate()B K else i" (e!ent.get-ource() EE subMenu.uit) D -ystem.e:it(()B K K pri!ate !oid "rame>nsert() D insert "rame>nsert E new insert()B K pri!ate !oid "rame2elete() D delete "rame2elete E new delete()B K pri!ate !oid "rame pdate() D update "rame pdate E new update()B K

K ,utput program+

/ampilan program gabungan(ja#a

Perintah MySQL untuk Menampilkan Data dari Beberapa Tabel


JAN18

201066 COMMENTS

WRITTEN BY ACHMATIM

Di dalam suatu RDBMS termasukMySQL, tentunya sudah men adi suatu ke!a aran ika dalam satu data"ase da#at terdiri dari "e"era#a ta"el$ Masin%&masin% tabel terse"ut da#at "erhu"un%an '"erelasi( satu sama lain$ Relasi antar&ta"el da#at "eru#a relasi 1&1 ' one-toone(, 1&M 'one-to-many(, atau M&N 'many-to-many($ Se"a%ai )*nt*h terlihat #ada %am"ar #em*delan data k*nse#tual 'class diagram( di "a!ah ini$ Ta"el #elan%%an "erhu"un%an den%an #esan, #esan den%an "aran%, ds"$ +ada #em"uatan suatu a#likasi, terkadan% kita u%a memerlukan tam#ilan data yan% tidak hanya "erasal dari 1 'satu( ta"el, namun "isa dari "e"era#a ta"el sekali%us$ ,*nt*hnya, dariclass diagram di "a!ah, kita in%in menam#ilkan nama #elan%%an "erikut transaksi yan% #ernah dilakukannya$ Dari )*nt*h terse"ut, kita harus "isa menggab ng!an minimal d a tabel, yaitu #elan%%an dan #esan$ -ntuk men%%a"un%kan . 'dua( atau le"ih ta"el, kita da#at men%%unakan "entuk #erintah"OIN$ Dalam t t#rial ini, akan di elaskan se)ara "ertaha# men%enai "a%aimana men%%a"un%kan dua ta"el atau le"ih, terutama untuk menam$il!an data yan% "erasal dari "e"era#a ta"el$ ,*nt*h&)*nt*h dalam tut*rial ini se)ara khusus telah di)*"a di data"ase MyS/0, namun demikian se)ara umum #erintah #en%%a"un%an ta"el di semua enis data"ase tidak auh "er"eda alias sama$ Se"elum "ela ar men%enai #erintah #en%%a"un%an ta"el, #erlu di#ersia#kan ta"el&ta"el yan% akan di adikan se"a%ai "ahan latihan dan )*nt*h dalam tut*rial ini$ 1ita akan men%%unakan ta"el ran)an%an sistem #emesanan "aran% '#em"elian( sederhana "erikut ini$ -ntuk mem"uatnya, Anda da#at men%%unakan t**ls se#erti +2+MyAdmin dan MyS/03r*nt atau da#at u%a melalui )*mmand&#r*m#t$ Jika di#erlukan, #ela ari kem"ali #*stin%an saya se"elumnya men%enai administrasi data"ase MyS/0 den%an +2+MyAdmin dan u%a dasar&dasar #erintah S/0$ Jan%an lu#a isikan "e"era#a )*nt*h data ke ta"el&ta"el yan% sudah Anda "uat$

C#nt#% Class &iagram Sistem 'embelian

1( Inner "#in
Den%an inner *in, ta"el akan di%a"un%kan dua arah, sehin%%a tidak ada data yan% N-00 di satu sisi$ Se"a%ai )*nt*h, kita akan men%%a"un%kan ta"el #elan%%an dan #esan dimana kita akan menam#ilkan da4tar #elan%%an yan% #ernah melakukan #emesanan 'transaksi($ Misalkan isi ta"el #elan%%an dan #esan adalah se"a%ai "erikut 5 Ta"el $elanggan 'hanya ditam#ilkan 4ield id6#elan%%an, nm6#elan%%an dan email(

C#nt#% isi tabel $elanggan Ta"el $esan$

C#nt#% isi tabel $esan Cara )1( Inner "#in dengan *HE+E$ +en%%a"un%an den%an klausa W2ERE memiliki "entuk umum se"a%ai "erikut5
SELECT tabel1.*, tabel2.* FROM tabel1, tabel2 WHERE tabel1.PK=tabel2.FK;

Berikut ini #erintah S/0 untuk men%%a"un%kan ta"el #elan%%an dan #esan5
SELECT pelanggan.id pelanggan, pelanggan.n! pelanggan, pe"an.id pe"an, pe"an.tgl pe"an FROM pelanggan, pe"an WHERE pelanggan.id pelanggan=pe"an.id pelanggan;

2asilnya se"a%ai "erikut5

Hasil 'enggab ngan 2 Tabel dengan *HE+E +ada hasil #erintah 7uery di atas terlihat "ah!a terda#at 8 'lima( transaksi yan% dilakukan *leh 9 'ti%a( *ran% #elan%%an$ Jika kita lihat kem"ali isi ta"el #elan%%an di atas, maka terda#at satu #elan%%an yan% tidak ditam#ilkan yaitu yan% memiliki id $elanggan '000,$ +elan%%an terse"ut tidak ditam#ilkan karena "elum #ernah melakukan transaksi$

Cara )1( Inner "#in dengan !la sa INNE+ "OIN$ Berikut ini "entuk umumnya5
SELECT tabel1.*, tabel2.* FROM tabel1 #$$ER %O#$ tabel2 O$ tabel1.PK=tabel2.FK;

Dan "erikut ini #erintah S/0 #en%%a"un%an ta"el #elan%%an dan #esan$
SELECT pelanggan.id pelanggan, pelanggan.n! pelanggan, pe"an.id pe"an, pe"an.tgl pe"an FROM pelanggan #$$ER %O#$ pe"an O$ pelanggan.id pelanggan=pe"an.id pelanggan;

2asilnya akan sama den%an %am"ar di atas ')ara :1($

2( O ter "#in
Den%an *uter *in, ta"el akan di%a"un%kan satu arah, sehin%%a memun%kinkan ada data yan% N-LL 'k*s*n%( di satu sisi$ Se"a%ai )*nt*h, kita akan men%%a"un%kan ta"el #elan%%an dan #esan dimana kita akan menam#ilkan da4tar #elan%%an yan% #ernah melakukan #emesanan 'transaksi($ ;uter J*in ter"a%i men adi . 'dua( yaitu LE.T "OIN dan +I/HT "OIN$ Berikut ini "entuk umum dan )*nt*hnya5 LE.T "OIN( Bentuk umum5
SELECT tabel1.*, tabel2.* FROM tabel1 LEFT %O#$ tabel2 O$ tabel1.PK=tabel2.FK;

,*nt*h #erintah S/05

SELECT pelanggan.id pelanggan, pelanggan.n! pelanggan, pe"an.id pe"an, pe"an.tgl pe"an FROM pelanggan LEFT %O#$ pe"an O$ pelanggan.id pelanggan=pe"an.id pelanggan;

2asilnya5

Hasil 'erinta% Le0t "#in Ber"eda den%an hasil se"elumnya 'inner *in(, #en%%unaan le4t *in akan menam#ilkan u%a data #elan%%an den%an id +<<<9, !alau#un #elan%%an terse"ut "elum #ernah "ertransaksi$ Dan #ada k*l*m id6#esan dan t%l6#esan untuk #elan%%an +<<<9 isinya N-00, artinya di ta"el kanan '#esan( #elan%%an terse"ut tidak ada$ +I/HT "OIN Bentuk umum5
SELECT tabel1.*, tabel2.* FROM tabel1 R#&HT %O#$ tabel2 O$ tabel1.PK=tabel2.FK;

,*nt*h #erintah S/05


SELECT pelanggan.id pelanggan, pelanggan.n! pelanggan, pe"an.id pe"an, pe"an.tgl pe"an FROM pelanggan R#&HT %O#$ pe"an O$ pelanggan.id pelanggan=pe"an.id pelanggan;

2asilnya5

Hasil 'erinta% +ig%t "#in Den%an ri%ht *in, ta"el yan% men adi a)uan adalah ta"el se"elah kanan 'ta"el #esan(, adi semua isi ta"el #esan akan ditam#ilkan$ Jika data #elan%%an tidak ada di ta"el #elan%%an, maka isi ta"el #esan teta# ditam#ilkan$

Menggab ng!an , Tabel ata Lebi%


-ntuk men%%a"un%kan ti%a ta"el atau le"ih, #ada dasarnya sama den%an #en%%a"un%an . 'dua( ta"el$ Se"a%ai )*nt*h misalnya kita akan menam#ilkan "aran%&"aran% yan% di#esan "eserta nama "aran% dan har%anya untuk #emesanan den%an n*m*r 1, sedemikian sehin%%a hasilnya men adi se"a%ai "erikut5

C#nt#% Hasil 'enggab ngan , Tabel