PEMROGRAMAN DATABASE MENGGUNAKAN MYSQL
A. Target Praktikum- Mahasiswa mengetahui struktur dasar pemrograman database.
- Mahasiswa mengetahui cara pengoperasian simpan, edit, cari dan hapus suatu data dalam database. - Mahasiswa mampu menyelesaikan permasalahan menggunakan pemrograman database.
B. Materi Dasar 1. Data Base
Data Base merupakan sebuah tempat untuk menyimpan data secara permanent ke dalam media penyimpanan / memori sekunder .
Agar dapat terkoneksi ke MySQL diperlukannya library tambahan untuk driver JDBC. Silakan download library tersebut di situs web mysql.com, anda akan memperoleh file mysql-connector-java- 5.1.8.tar. Kemudian ekstrak file tersebut. Salah satu hasil ekstraksinya adalah file mysql-connector- java-5.1.8-bin.jar dan inilah library driver JDBC MySQL yang dimaksud. Salin file ini ke direktori C:\Program Files\Java\jre6\lib\ext atau ke folder lain sesuai dengan lokasi instalasi JRE.
2. JDBC (Java Database Connectivity)
- Suatu interface pemrograman antara program aplikasi dan DBMS - JDBC berbentuk API
- Menggunakan perintah SQL untuk memberi perintah ke DBMS 2.1 JDBC API (Aplication Program Interface)
- Terdiri dari sejumlah class dan interface yang ditulis dalam bahasa Java - Menyediakan API standard sebagai alat bantu bagi pembuat program
- Memberikan kemungkinan untuk menulis aplikasi database dengan menggunakan semua Java API
- Kelebihan
1. Dapat mengakses sembarang sumber data
Sybase, Oracle atau Access dan lain-lain tergantung dengan jenis JDBC yang dipakai, 2. Dapat berjalan pada sembarang platform yang mempunyai Java Virtual Machine(JVM). - Tugas utama JDBC
1. Membangun sebuah koneksi ke sumber data (data source). 2. Mengirim statement ke sumber data.
2.2 Menggunakan JDBC
Berikut Tahapan yang dilakukan untuk menggunakan JDBC : import java.sql.*;
/** *
* @author Gianto-echa */
public class koneksi_database { Connection connection=null; void Koneksi() {
try{
String connectionURL = "jdbc:mysql://localhost/coba"; String username = "root";
String password = "root";
Class.forName("com.mysql.jdbc.Driver");
connection= DriverManager.getConnection(connectionURL, username , password ); System.err.println("Sukses Koneksi");
}
catch(Exception ex){
System.err.println("Tidak Berhasil Koneksi"); System.exit(1);
} }
public static void main(String args[]){
koneksi_database kb=new koneksi_database(); kb.Koneksi();
} }
Setelah anda ketikkan Kode tersebut, anda buat sebuah database dengan nama coba, kemudian compile dan jalankan, maka output yang akan dihasilkan adalah sebagai berikut:
Berikut penjabaran dari kelas koneksi_database untuk database, sesuai dengan kode diatas, - Pemanggilan Class Driver
Class.forName("com.mysql.jdbc.Driver");
Berikut bebrapa kode pemangilan class driver untuk berbagai macam database : • Oracle : Class.forName(“oracle.jdbc.OracleDriver”);
• Sybase: Class.forName(“com.sybase.jdbc.SybDriver”); • ODBC: Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); • Mysql : Class.forName("com.mysql.jdbc.Driver"); - Menentukan Lokasi Database Server
Untuk menentukan lokasi database server untuk mysql, anda gunakan kode berikut ini : String connectionURL = "jdbc:mysql://localhost/alumni ";
3. Perintah SQL
Structured Query Language (SQL) telah diakui sebagai bahasa standart untuk mengakses dan manipulasi database. Pada pembahasan kali ini kita akan tunjukkan beberapa intruksi SQLdan dibedakan menjadi 2 macam perintah yaitu:
3.1 DML (Data manipulation Language)
Peritah DML adalah perintah query yang digunakan untuk memanipulasi data pada suatu database. Berikut perintah yang ada pada DML,
a. Insert
insert into NamaTabel
values('"+field_1+"','"+Field_2+"','"+…+"','"+Field_ke_n+"');";
Contoh :
Dalam Contoh Ini Kita Akan membuat sebuah database sederhana dengan nama coba, kemudian di dalamnya kita buat sebuah table dengan nama mahasiswa dengan struktur sebagai berikut :
Nama Field Type (Length) Nim Varchar(12) Nama Varchar(40) Alamat Varchar(70)
Dengan property sebagai berikut :
Komponen Label Nama Objek Nim (JTextField) txtnim Nama (JTextField) txtnama Alamat (JTextArea) txtalamat
Setelah itu anda anda tambahkan fungsi untuk koneksi seperti berikut : void Koneksi(){
try{
String connectionURL = "jdbc:mysql://localhost/coba"; String username = "root";
String password = "root";
Class.forName("com.mysql.jdbc.Driver");
con= DriverManager.getConnection(connectionURL, username , password ); System.err.println("Sukses Koneksi");
}
catch(Exception ex) {
System.err.println("Tidak Berhasil Koneksi"); System.exit(1);
} }
Anda Panggil Fungsi Koneksi Tersebut Kedalam Method/Fungsi Utama dari aplikasi anda seperti berikut :
public static void main(String args[]) {
Database db2=new Database(); db.Koneksi();
}
Setelah itu anda buat sebuah fungsi dengan nama simpan() kemudian anda ketikkan kode berikut ini : void simpan(){
try {
Statement statement = con.createStatement(); String sql="insert into mahasiswa
values('"+txtnim.getText()+"','"+txtnama.getText()+"','"+txtalamat.getText()+"');"; statement.executeUpdate(sql); statement.close();
JOptionPane.showMessageDialog(null,"Berhasil disimpan");
}
catch(Exception ex){
JOptionPane.showMessageDialog(null,"nim data sudah ada"); System.err.print(ex);
} }
Anda Buat Sebuah Fungsi/Method dengan nama aksi() Kemudian anda panggil fungsi tersebut pada method aksi ketika tombol simpan di klik, seperti berikut ini :
void aksi() {
btsimpan.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) {
simpan(); }
}); }
Pernyataan Select digunakan untuk mengambil data dari table dalam database sesuai dengan kriteria yang ditentukan. Berikut ini adalah conton perintah Select:
SELECT * FROM NamaTabel ; Mengambil seluruh data tanpa terkecuali.
SELECT field_1,field_2 FROM NamaTabel ; Mengambil data dari table Data field Kode saja
Contoh : Anda Tambahkan fungsi cari() pada program sebelumnya dan ketikkan kode berikut ini : void cari(){
try{
Statement stat = con.createStatement();
String sql="SELECT * FROM mahasiswa Where nim like'"+txtnim.getText()+"'"; ResultSet isi = stat.executeQuery(sql);
if(isi.next()){ txtnama.setText(isi.getString(1)); txtalamat.setText(isi.getString(2)); ada..!"); } } else{
JOptionPane.showMessageDialog(null,"mahasiswa dengan nim tersebut tidak
}
stat.close();
catch (Exception ex){
JOptionPane.showMessageDialog(null,"Error :"+ex); }
}
Kemudian anda panggil fungsi tersebut pada method aksi ketika tombol cari di klik, seperti berikut ini :
void aksi() {
btcari.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) {
cari(); }
}); }
c. Update
update NamaTabel set field_1='"+ value_1+"', field_2='"+ value_2+"', field_3='"+ value_3+"' where field_x='"+value_4+"’;
Contoh : Anda Tambahkan fungsi update() pada program sebelumnya dan ketikkan kode berikut ini : void update(){
try{
Statement stm=con.createStatement();
String sql="update mahasiswa set nama='"+txtnama.getText()+"', alamat='"+txtalamat.getText()+"'where nim='"+txtnim.getText()+"'"; stm.executeUpdate(sql); stm.close(); JOptionPane.showMessageDialog(null,"Berhasil diedit"); } catch(Exception ex){ JOptionPane.showMessageDialog(null,"Error :"+ex); } }
Kemudian anda panggil fungsi tersebut pada method aksi ketika tombol update di klik, seperti berikut ini :
void aksi() {
btupdate.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) {
update(); }
}); }
d. Delete
delete from NamaTabel "+ "where Field_x='"+value_x+"';
Contoh : Anda Tambahkan fungsi hapus() pada program sebelumnya dan ketikkan kode berikut ini : void hapus(){
try{
String sql="delete from mahasiswa "+ " where nim='"+txtnim.getText()+"'"; statement.executeUpdate(sql); statement.close();
JOptionPane.showMessageDialog(null,"Data telah di Hapus"); }
catch(Exception ex){
JOptionPane.showMessageDialog(null,"Error :"+ex); }
}
Kemudian anda panggil fungsi tersebut pada method aksi ketika tombol hapus di klik, seperti berikut ini :
void aksi() {
bthapus.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) {
cari(); }
}); }
Listing Kode Lengkap Bisa Anda Lihat Di lampiran Yang Ada Pada Modul ini.
3.2 DDL (Data Definition Language)
Peritah DDL adalah perintah query yang digunakan untuk membangun atau merekayasa database. Berikut perintah yang ada pada DDL,
a. Create b. Alter c. Drop
Dalam praktikum ini kita hanya akan mempelajari proses DML(Data Manipulation Language) yaitu proses yang nantinya kita gunakan untuk memanipulasi record yang terdapat dalam table dari databse
Daftar Pustaka
Lampiran 1
Contoh Listing Kode Aplikasi Java A. Membuat Jam Digital
import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.util.*; import javax.swing.Timer;
public class jam extends JFrame {
JLabel tampil=new JLabel(""); Timer tim; jam() { super("jam"); setLocation(200,100); setSize(400,200); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } void reaksi() { getContentPane().setLayout(new FlowLayout()); getContentPane().add(tampil); tampil.setFont(new Font("impaq",20,50)); getContentPane().setBackground(Color.RED); tampil.setForeground(Color.GREEN); setVisible(true);
ActionListener t=new ActionListener() {
public void actionPerformed(ActionEvent evt) {
String nol_jam=""; String nol_detik=""; String nol_menit=""; Date dt=new Date (); int nilai_jam=dt.getHours(); int nilai_menit=dt.getMinutes(); int nilai_detik=dt.getSeconds(); if (nilai_detik <=9) { nol_detik="0"; } if (nilai_menit <= 9) { nol_menit ="0"; } if (nilai_jam <= 9 ) { nol_jam="0"; }
String jam=nol_jam+ Integer.toString(nilai_jam); Stringmenit=nol_menit+Integer.toString(nilai_menit); Stringdetik=nol_detik+Integer.toString(nilai_detik); tampil.setText(""+jam+":"+menit+":"+detik+""); } }; tim=new Timer(1000,t); tim.start(); }
public static void main(String args[]) {
jam j=new jam(); j.reaksi(); } }
B. Membuat JMenu import javax.swing.*; import java.awt.*; import javax.swing.table.*; import java.awt.event.*; import java.sql.*;
class menunya extends JFrame {
JMenuBar mb=new JMenuBar(); JMenu mn=new JMenu("File"); JMenu mn2=new JMenu("Open"); JRadioButton bt=new JRadioButton("buku"); JMenuItem mnt=new JMenuItem("Close"); JMenuItem unta=new JMenuItem("Unta"); menunya()
{
super("PROGRAM MENGHITUNG ZAKAT"); setLocation(200,100); setSize(400,350); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } void objek() { getContentPane().add(mb,BorderLayout.NORTH); mb.add(mn); mn2.add(bt); mn.add(mn2); mn.add(mnt); mn.add(unta); mb.setBounds(10,10,100,30); setVisible(true); }
public static void main(String args[]) {
menunya ZZ=new menunya(); ZZ.objek();
} }
C. Aplikasi Tampilkan Tanggal import javax.swing.*;
import java.awt.*; import java.awt.event.*; import java.util.*; import javax.swing.Timer; class tanggal extends JFrame
{
JLabel tampil=new JLabel(""); Timer tim; tanggal() { setTitle("jam"); setLocation(200,100); setSize(400,150); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); buatTanggal(); } void tampilan() { getContentPane().setLayout(new FlowLayout()); getContentPane().add(tampil); tampil.setFont(new Font("impaq",20,25)); tampil.setForeground(Color.GREEN); setVisible(true); } void buatTanggal() {
ActionListener t=new ActionListener() {
public void actionPerformed(ActionEvent evt) {
String bulan=""; String hari=""; Date dt=new Date();
int ntahun=dt.getYear()+1900; int nbulan=dt.getMonth()+1; int nhari=dt.getDate();
String tbulan=bulan+Integer.toString(nbulan); String thari =hari+Integer.toString(nhari); String thn=String.valueOf(ntahun);
tampil.setText("Tanggal : "+thari+" Bulan :"+tbulan+" Tahun :"+thn); } }; tim=new Timer(1000,t); tim.start(); }
public static void main(String args[]) {
tanggal j=new tanggal(); j.tampilan();
} }
D. Color Chooser import java.awt.*; import java.awt.event.*;
import javax.swing.colorchooser.*; import javax.swing.*;
class colorcoser extends JFrame {
JLabel cop=new JLabel("PROGRAM GANTI WARNA"); JInternalFrame jInternalFrame1 = new JInternalFrame(); JColorChooser jColorChooser1 = new JColorChooser(); JPanel Panel1 = new JPanel();
JPanel Panel2 = new JPanel(); JButton btChange = new JButton(); JButton btCancel = new JButton();
JButton warna = new JButton("Ganti Warna"); colorcoser()
{
super("PROGRAM GANTI WARNA"); setSize(500,550); setLocation(40,20); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } void komponen() { void reaksi() { warna.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) { if(e.getSource()==warna) { jInternalFrame1.setVisible(true); } } }); btCancel.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) { if(e.getSource()==btCancel) { jInternalFrame1.setVisible(false); } } }); getContentPane().setLayout(null); getContentPane().add(jInternalFrame1); jInternalFrame1.getContentPane().setLayout(null); jInternalFrame1.setVisible(false); getContentPane().add(cop); getContentPane().add(warna); cop.setBounds(150, 10, 150, 23); warna.setBounds(150, 40, 150, 23); Panel1.setLayout(null); Panel1.setBorder(javax.swing.BorderFactory.createEtchedBorder (javax.swing.border.EtchedBorder.RAISED)); Panel1.add(jColorChooser1); jColorChooser1.setBounds(9, 10, 440, 290); jInternalFrame1.getContentPane().add(Panel1); Panel1.setBounds(10, 10, 460, 310); Panel2.setLayout(null); Panel2.setBorder(javax.swing.BorderFactory.createEtchedBorder (javax.swing.border.EtchedBorder.RAISED)); btChange.setText("Change"); Panel2.add(btChange); btChange.setBounds(230, 10, 100, 23); btCancel.setText("Cancel"); Panel2.add(btCancel); btCancel.setBounds(350, 10, 100, 23); jInternalFrame1.getContentPane().add(Panel2); Panel2.setBounds(10, 330, 460, 40); jInternalFrame1.setBounds(4, 70, 490, 420); getContentPane().setBackground(new java.awt.Color(234,235,213)); setVisible(true); btChange.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) { if(e.getSource()==btChange) { Color newColor=jColorChooser1.getColor(); getContentPane().setBackground(newColor); jInternalFrame1.setVisible(false); } } }); }
public static void main(String[] args) {
colorcoser evt=new colorcoser(); evt.komponen();
evt.reaksi(); }
}
A. Contoh Aplikasi Database Sederhana :
Anda Buat Database baru dengan nama coba, kemudian buat table dengan mengeksekusi query berikut ini :
CREATE TABLE IF NOT EXISTS `mahasiswa` ( `nim` varchar(12) NOT NULL,
`nama` varchar(40) NOT NULL, `alamat` varchar(200) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
Kemudian Anda Buat Kelas Baru Dengan Nama Database2 dan Anda Pastekan Kode Berikut:
import java.sql.*; import javax.swing.*; import java.awt.event.*; /** * * @author Gianto-echa */
public class Database2 extends JFrame {
Connection con=null;
JLabel jLabel1 = new JLabel(); JTextField txtnama = new JTextField(); JLabel jLabel2 = new JLabel();
JScrollPane jScrollPane1 = new JScrollPane(); JTextArea txtalamat = new JTextArea(); JLabel jLabel3 = new JLabel();
JButton bthapus = new JButton(); JButton btcari = new JButton(); JButton btupdate = new JButton(); JTextField txtnim = new JTextField(); JLabel jLabel4 = new JLabel(); JButton btsimpan = new JButton(); Database2() { setSize(320,280); setLocation(100,100); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } void Koneksi() { try {
String connectionURL = "jdbc:mysql://localhost/coba"; String username = "root";
String password = "root";
con= DriverManager.getConnection(connectionURL, username , password ); System.err.println("Sukses Koneksi");
}
catch(Exception ex) {
System.err.println("Tidak Berhasil Koneksi"); System.exit(1); } } void simpan() { try {
Statement statement = con.createStatement(); String sql="insert into mahasiswa
values('"+txtnim.getText()+"','"+txtnama.getText()+"','"+txtalamat.getText()+"');"; statement.executeUpdate(sql); statement.close(); JOptionPane.showMessageDialog(null,"Berhasil disimpan"); } catch(Exception ex) {
JOptionPane.showMessageDialog(null,"nim data sudah ada"); System.err.print(ex);
} }
public void cari() {
try {
Statement stat = con.createStatement();
String sql="SELECT * FROM mahasiswa Where nim like'"+txtnim.getText()+"'"; ResultSet isi = stat.executeQuery(sql);
if(isi.next()) { txtnama.setText(isi.getString(1)); txtalamat.setText(isi.getString(2)); } else {
JOptionPane.showMessageDialog(null,"mahasiswa dengan nim tersebut tidak ada..!"); }
stat.close(); }
catch (Exception ex) { JOptionPane.showMessageDialog(null,"Error :"+ex); } } void update() { try
{
Statement stm=con.createStatement();
String sql="update mahasiswa set nama='"+txtnama.getText()+"', alamat='"+txtalamat.getText()+"'where nim='"+txtnim.getText()+"'"; stm.executeUpdate(sql); stm.close(); JOptionPane.showMessageDialog(null,"Berhasil diedit"); } catch(Exception ex) { JOptionPane.showMessageDialog(null,"Error :"+ex); } }
public void hapus() {
try {
Statement statement = con.createStatement();
String sql="delete from mahasiswa "+ " where nim='"+txtnim.getText()+"'"; statement.executeUpdate(sql); statement.close();
JOptionPane.showMessageDialog(null,"Data telah di Hapus"); } catch(Exception ex) { JOptionPane.showMessageDialog(null,"Error :"+ex); } } void aksi() { btsimpan.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) {
simpan(); }
});
btupdate.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) {
update(); }
});
bthapus.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) {
hapus(); }
});
btcari.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) {
cari(); }
}); }
private void initComponents() { getContentPane().setLayout(null);
jLabel1.setText("Contoh Aplikasi Database Sederhana"); getContentPane().add(jLabel1); jLabel1.setBounds(20, 10, 200, 14); getContentPane().add(txtnama); txtnama.setBounds(90, 70, 170, 20); jLabel2.setText("Alamat"); getContentPane().add(jLabel2); jLabel2.setBounds(20, 100, 34, 14); txtalamat.setColumns(20); txtalamat.setRows(5); jScrollPane1.setViewportView(txtalamat); getContentPane().add(jScrollPane1); jScrollPane1.setBounds(90, 96, 166, 70); jLabel3.setText("Nama"); getContentPane().add(jLabel3); jLabel3.setBounds(20, 70, 27, 14); bthapus.setText("Delete"); getContentPane().add(bthapus); bthapus.setBounds(180, 180, 73, 23); btcari.setText("Cari"); getContentPane().add(btcari); btcari.setBounds(200, 40, 51, 23); btupdate.setText("Update"); getContentPane().add(btupdate); btupdate.setBounds(90, 180, 73, 23); getContentPane().add(txtnim); txtnim.setBounds(90, 40, 100, 20); jLabel4.setText("Nim"); getContentPane().add(jLabel4); jLabel4.setBounds(20, 40, 17, 14); btsimpan.setText("Simpan"); getContentPane().add(btsimpan); btsimpan.setBounds(10, 180, 67, 23); setVisible(true); }
public static void main(String args[]) {
Database2 db2=new Database2(); db2.initComponents(); db2.Koneksi(); db2.aksi(); } }