Anda di halaman 1dari 11

Mengakses Database MySQL menggunakan JDBC

7 langkah menggunakan JDBC


1. 2. 3. 4. 5. 6. 7. Memuat driver Mendefinisikan URL koneksi Menetapkan koneksi Menciptakan objek Statement Mengeksekusi query Memproses hasil Menutup koneksi

Memuat driver
Class.forName(com.mysql.jdbc.Driver).newInstance();

Mendefinisikan URL koneksi


String !rl " jdbc#mysql#$$%&''local(ost#'nama)db;

Meneta kan koneksi


connection " Driver*anager.getConnection(!rl+!ser+ ,assword);

Men!i takan Statement


Statement statement " connection.createStatement();

Mengeksekusi Query
String q!ery " -S./.C0 1 234* tabel-; 3es!ltSet res!ltSet " statement.e5ec!te6!ery(q!ery);

Menutu "oneksi
connection.close();

Contoh Siapkan database (misal test) dan tabel (misal tabel mhs). Struktur tabel mhs seperti berikut.
mysql7 desc m(s; 8999999999899999999999998999999899999899999999999999998 : 2ield : 0y,e : N!ll : ;ey : .5tra : 8999999999899999999999998999999899999899999999999999998 : id : int(<<) : N4 : =3I : a!to)increment : : nim : c(ar(>) : ?.S : @NI : : : nama : varc(ar($%) : ?.S : : : : j!r!san : c(ar(A) : ?.S : : : 8999999999899999999999998999999899999899999999999999998

Isilah tabel ini dengan data seperti berikut.

mysql7 select 1 from m(s; 8999989999999999989999999999999999989999999998 : id : nim : nama : j!r!san : 8999989999999999989999999999999999989999999998 : < : <%$<<%%%< : S!si S!santi : *I : : A : <%$$>%%%A : B!di S!santo : 0; : : $ : <%CD<%%%$ : Emir Syarif!din : 0I : 8999989999999999989999999999999999989999999998

Buat project. ada node Libraries tambahkan konektor !"B# $ mysql9 connector9java95.5.59bin.jar% seperti berikut.

Buat package dengan nama misalnya a,liFasiFrs. "alam package ini buat !ava #lass& nama *a(asiswa.java& tulis kode seperti berikut.
,acFage a,liFasiFrs; im,ort java.sql.1; im,ort java.!til.Gector; ,!blic class *a(asiswa H '' ,ro,erti ,rivate int id; ,rivate String nim; ,rivate String nama; ,rivate String j!r!san; '' variabel !nt!F Fe,erl!an FoneFsi ,rivate String !rl " -jdbc#mysql#''local(ost'test-; ,rivate Connection con " n!ll; ,rivate Statement st " n!ll; ,rivate int (asil " %; ,rivate String sql " n!ll; ,rivate 3es!ltSet rs " n!ll; ,rivate String error " n!ll;

'' !ser *yS6/ ,rivate String !ser " -root-; ,rivate String ,assword " -root-; '' tem,at ,enyim,anan data Fedalam Gector ,rivate Gector daftar*(s; '' sat! baris data ,rivate Gector baris; '' meng(asilFan id ,!blic int getId() H ret!rn id; I '' mengisi id ,!blic void setId(int id)H t(is.id " id; I '' meng(asilFan nim ,!blic String getNim() H ret!rn nim; I '' mengisi nim ,!blic void setNim(String nim) H t(is.nim " nim; I '' meng(asilFan nama ,!blic String getNama() H ret!rn nama; I '' mengisi nama ,!blic void setNama(String nama) H t(is.nama " nama; I '' meng(asilFan j!r!san ,!blic String getJ!r!san() H ret!rn j!r!san; I '' mengisi j!r!san ,!blic void setJ!r!san(String j!r!san) H t(is.j!r!san " j!r!san; I '' membaca data (S./.C0) dari tabel '' ret!rn val!e ber!,a (asil ,embacaan dari tabel '' ret!rn val!e ber!,a objeF GeFtor ,rivate Gector baca(String sqlBaca)H error " n!ll; if(daftar*(s "" n!ll) daftar*(s " new Gector(); else

daftar*(s.clear(); try H Class.forName(-com.mysql.jdbc.Driver-).newInstance(); con " Driver*anager.getConnection(!rl+ !ser+ ,assword); st " con.createStatement(); rs " st.e5ec!te6!ery(sqlBaca); w(ile(rs.ne5t())H '' ci,taFan seb!a( baris sebagai objeF Gector baris " new Gector(); ''mas!FFan Fe sat! baris data ''baris.add.lement(rs.getInt(-id-)); baris.add.lement(rs.getString(-nim-)); baris.add.lement(rs.getString(-nama-)); baris.add.lement(rs.getString(-j!r!san-)); '' tamba(Fan baris ini Fe objeF daftar*(s daftar*(s.add.lement(baris); I st.close(); '' close statement rs.close(); '' close res!lt set con.close(); '' close database Connection I catc( (.5ce,tion e) H error " -gagal aFses database-; I ret!rn daftar*(s;

'' memanggil met(od baca() !nt!F meng(asilFan '' sem!a record dalam tabel m(s '' ret!rn val!e ber!,a (asil ,embacaan dari tabel ,!blic Gector getSem!a()H sql " -select 1 from m(s-; ret!rn baca(sql); I I

'ambahkan (rame kedalam project& namai ) Utama.java Buat desain frame seperti berikut.

ada bagian deklarasi variabel tambahkan deklarasi berikut $dicetak tebal%)


. . . ,rivate java5.swing.J*en!Item men!ItemKa,!s; ,rivate java5.swing.J*en!Item men!Item/i(at; ,rivate java5.swing.J*en!Item men!Item0amba(; ,rivate java5.swing.J*en!Item men!Item@ba(; ,rivate java5.swing.J*en! men!;rs; ,rivate java5.swing.J*en! men!*(s; ,rivate java5.swing.J0able table*(s; '' .nd of variables declaration private Mahasiswa mhs;

ada konstruktor tambahkan kode $dicetak tebal% sehingga menjadi seperti berikut.
,!blic @tama() H initCom,onents(); tampilMhs(); mhs = new Mahasiswa(); I

'ambahkan method tampilMhs$% seperti berikut.


,!blic void tam,il*(s()H 0ableCol!mn Folom " n!ll; Gector nama;olom " new Gector(); nama;olom.add.lement(-NI*-); nama;olom.add.lement(-Nama-); nama;olom.add.lement(-J!r!san-); *a(asiswa m(s " new *a(asiswa(); Gector data " m(s.getSem!a(); Defa!lt0able*odel model " new Defa!lt0able*odel(data+ nama;olom); table*(s.set*odel(model); Folom " table*(s.getCol!mn(-NI*-); Folom.set=referredLidt((D%); Folom " table*(s.getCol!mn(-Nama-); Folom.set=referredLidt((A%%); Folom " table*(s.getCol!mn(-J!r!san-); Folom.set=referredLidt(($%); I

ada Button btn'utup& tulis kode)


,rivate void btn0!t!,Ection=erformed(java.awt.event.Ection.vent evt) H '' 04D4 add yo!r (andling code (ere# System.exit(0); I

!alankan aplikasi *nda)

Menambah Re!ord#baris ke tabel "alam kelas Mahasis+a& tambahkan kode berikut $method ganti$% dan tambah$%%.
'' di,anggil dengan sqlManti ber!,a INS.30+ @=DE0.+ D./.0. ,rivate int ganti(String sqlManti)H error " n!ll; try H Class.forName(-com.mysql.jdbc.Driver-).newInstance(); con " Driver*anager.getConnection(!rl+ !ser+ ,assword); st " con.createStatement(); (asil " st.e5ec!te@,date(sqlManti); st.close();''Close statement con.close(); ''Close database Connection I catc( (.5ce,tion e) H error " -gagal aFses database-; I ret!rn (asil; I ,!blic int tamba(()H sql " -insert into m(s -8 -set nim " N-8nim8 -N+ nama " N-8nama8 -N+ j!r!san " N-8j!r!san8-Nret!rn ganti(sql); I

ada method ganti& terdapat pernyataan)


(asil " st.e5ec!te@,date(sqlManti);

Method e,ecuteUpdate$% dari objek Statement $st% dipakai untuk menjalankan perintah S-L berupa) ./S0R'& U "*'0& "0L0'0. Setelah eksekusi method ini& ia akan memberikan nilai hasil berupa nilai 1 atau bukan 1 $bulat positip%. /ilai 1 artinya tidak ada baris$record% yang ditambahkan2diubah2dihapus. /ilai bukan 1 artinya menyatakan jumlah baris yang berhasil ditambahkan2diubah2dihapus.

"idalam method tambah$%& terdapat perintah S-L) insert . . .& selanjutnya memanggil method ganti$% dengan parameter S-L ini. !adi pemanggilan method tambah$% akan menambah record2baris baru ke tabel mhs. 3edalam project& yaitu pada node package aplikasikrs& tambahkan !"ialog (orm dengan cara berikut.

Beri nama file) "ialog'ambahMhs.java. Buat desain form seperti berikut.

4apuslah method main$% pada dialog ini. 'ambahkan deklarasi berikut pada bagian deklarasi variabel)
,rivate *a(asiswa m(s;

ada konstruktor& modifikasilah sehingga menjadi seperti berikut)


,!blic Dialog0amba(*(s(java.awt.2rame ,arent+ boolean modal+ *a(asiswa m(s) H s!,er(,arent+ modal); initCom,onents(); t(is.m(s " m(s; I

'ulis kode pada event *ction erformed pada btn'ambah seperti berikut)
,rivate void btn0amba(Ection=erformed(java.awt.event.Ection.vent evt) H '' 04D4 add yo!r (andling code (ere# m(s.setNim(tfNim.get0e5t()); m(s.setNama(tfNama.get0e5t()); m(s.setJ!r!san(tfJ!r!san.get0e5t()); int (asil " m(s.tamba((); if((asil O" %)H '' ber(asil menamba( record J4,tion=ane.s(ow*essageDialog(t(is+ -Data ma(asiswa tela( ditamba(Fan-); tfNim.set0e5t(n!ll); tfNama.set0e5t(n!ll); tfJ!r!san.set0e5t(n!ll); I else H '' gagal menamba( record J4,tion=ane.s(ow*essageDialog(t(is+ -Data ma(asiswa gagal ditamba(Fan-); I System.o!t.,rintln(m(s.getSql()); System.o!t.,rintln((asil); I

"ari kode di atas& objek mhs diisi data pada te,tfield. 3emudian panggil method tambah$%. !ika variabel hasil berisi bukan 1 berarti data berhasil ditambahkan ke tabel. emanggilan form ini dilakukan oleh frame utama $Utama.java%& yaitu pada item menu 'ambah. 'ulis kode pada event *ction erformed pada menu.tem'ambah seperti berikut)
,rivate void men!Item0amba(Ection=erformed (java.awt.event.Ection.vent evt) H '' 04D4 add yo!r (andling code (ere# if(dialog0amba(*(s "" n!ll) dialog0amba(*(s " new Dialog0amba(*(s(t(is+ tr!e+ m(s); dialog0amba(*(s.setGisible(tr!e); I

"ari kode di atas& objek "ialog'ambah diciptakan dengan parameter) this& true& mhs. arameter pertama& this) dialog ini miliknya $parent% adalah frame ini. arameter kedua& true) dialog berupa modal dialog arameter ketiga& mhs) objek Mahasis+a dile+atkan ke dialog ini agar nantinya digunakan oleh dialog ini. Mengubah re!ord ada tabel "alam kelas Mahasis+a& tambahkan method ubah seperti kode berikut)
,!blic int !ba(()H sql " -!,date m(s -8 -set nim " N-8nim8 -N+ nama " N-8nama8 -N+ j!r!san " N-8j!r!san8-N -8 -w(ere id " -8id; ret!rn ganti(sql);

Dari kode ini, pengubahan (update) dilakukan berdasar id. Maka diperlukan cara untuk mencari id dari tampilan yang ada. Sementara itu yang ditampilkan dari aplikasi adalah nim, nama, dan jurusan.

Oleh karena itu diambil cara !ser meng"klik salah satu baris.
int b " table*(s.getSelected3ow();

Dari baris itu diambil data nim


String nim " (String)table*(s.getGal!eEt(b+ %);

Setelah nim diperoleh, nim ini dipakai untuk melakukan pencarian kedalam tabel. #roses pencarian dilakukan dengan memanggil method cari() dari kelas Mahasis$a. %ode selengkapnya dari menuItem!bah&ction#er'ormed adalah seperti berikut
,rivate void men!Item@ba(Ection=erformed (java.awt.event.Ection.vent evt) H '' 04D4 add yo!r (andling code (ere# int b " table*(s.getSelected3ow(); if(b "" 9<)H J4,tion=ane.s(ow*essageDialog(t(is+ -=ili( d!l! dengan FliF seb!a( baris-); ret!rn; I String nim " (String)table*(s.getGal!eEt(b+ %); System.o!t.,rintln(nim); boolean Fetem! " m(s.cari(nim); if(Fetem!)H System.o!t.,rintln(m(s.getId()8m(s.getNama()); if(dialog@ba(*(s "" n!ll)H dialog@ba(*(s " new Dialog@ba(*(s(t(is+ tr!e+ m(s); I dialog@ba(*(s.setGisible(tr!e); I I

Sedangkan pada kelas Mahasis$a ditambahkan methdo cari() seperti berikut


'' mencari ma(asiswa berdasar nim ,!blic boolean cari(String nim)H boolean Fetem! " false; try H Class.forName(-com.mysql.jdbc.Driver-).newInstance(); con " Driver*anager.getConnection(!rl+ !ser+ ,assword); st " con.createStatement(); sql " -select 1 from m(s w(ere nim " N- 8 nim 8 -N-; rs " st.e5ec!te6!ery(sql); if(rs.ne5t())H t(is.id " rs.getInt(-id-); t(is.nim " rs.getString(-nim-); t(is.nama " rs.getString(-nama-); t(is.j!r!san " rs.getString(-j!r!san-); Fetem! " tr!e; IelseH t(is.FosongFan(); Fetem! " false; I st.close();''Close statement con.close(); ''Close database Connection I catc( (.5ce,tion e) HI ret!rn Fetem!; I

encarian akan menghasilkan nilai true jika diketemukan. Maka data record yang dicari $id& nim& nama& jurusan% akan disimpan ke objek ini. Sebaliknya& jika tidak diketemukan pemanggilan method ini akan memberikan nilai false. !ika diketemukan data dari objek mhs diberikan ke dialog "ialogUbahMhs. "ialog ini mempunyai desain seperti berikut)

"ari kelas "ialogUbahMhs& tambahkan deklarasi berikut pada bagian deklarasi variabel)
,rivate *a(asiswa m(s;

ada konstruktor& modifikasilah sehingga menjadi seperti berikut)

,!blic Dialog@ba(*(s(java.awt.2rame ,arent+ boolean modal+ *a(asiswa m(s) H s!,er(,arent+ modal); initCom,onents(); t(is.m(s " m(s; I

'ulis kode pada event *ction erformed pada btnUbah seperti berikut)
,rivate void btn@ba(Ection=erformed(java.awt.event.Ection.vent evt) H '' 04D4 add yo!r (andling code (ere# m(s.setNim(tfNim.get0e5t()); m(s.setNama(tfNama.get0e5t()); m(s.setJ!r!san(tfJ!r!san.get0e5t()); int (asil " m(s.!ba((); if((asil O" %)H '' ber(asil meng!ba( record J4,tion=ane.s(ow*essageDialog(t(is+ -Data ma(asiswa tela( di!ba(-); tfNim.set0e5t(n!ll); tfNama.set0e5t(n!ll); tfJ!r!san.set0e5t(n!ll); I else H '' gagal menamba( record J4,tion=ane.s(ow*essageDialog(t(is+ -Data ma(asiswa gagal di!ba(-); I I

Dengan cara yang mirip &nda dapat menghapus suatu record.