Saturday 19 January 2013

Koneksi Java JDBC Mysql dengan OOP

Koneksi Java ke database Mysql dengan JDBC sudah ane kasih contoh pada postingan sebelumnya, tapi kali ini ane pengen sedikit memodifikasi bagaimana cara mengkoneksikan Java Mysql dengan Object oriented programming (OOP).. contoh Aplikasi koneksi Java ke Database kali ini masih menggunakan database yang sama seperti postingan-postingan yang sebelumnya... yaitu database kantor... bagi ente yang baru mampir diblog ini monggo dibaca2 dulu artikel sebelumnya tentang CRUD dengan JAVA yang juga ane bahas didalamnya pembuatan database kantor... bagi ente yang sudah mengikuti blog ini sebelumnya.. monggo langsung ke aplikasinya ...
Oia, mungkin diantara pengunjung ada yang bertanya ?? kenapa kok pake OOP ?? kalo secara gamblangnya ane udah bahas juga dipostingan tentang sebelumnya tentang Object Oriented Programming Java, C# (C sharp) dan C++ .. ente bisa baca disitu... kalo jawaban simplenya... dengan menggunakan OOP Aplikasi / program yang kita bangun akan cepat selesai dan mudah sekali untuk di maintenance ... kenapa bisa begitu ?? ya bisa2 saja ... hehehhee,, dengan OOP kita tidak perlu menulis berkali2 kode program yang sama.. kasarannya gitu ws.. ehehehehe kalo udah keseringan bermain pemrograman procedural dan OOP pastinya ente lebih memilih OOP... ya nanti bisa ente rasakan saat ente ngerjain proyek.. :D ...

oke, pertama ente bikin desain form seperti gambar dibawah ini .... desain formnya mirip seperti postingan CRUD java... cuma ane gak kasi edit, hapus, cari ... cuma ane kasi simpan... kalo ente niat belajar pastinya selesai baca artikel ini pasti ente modifikasi lagi lah Contoh program yang ane kasi.. hehehehee.. karena sini ane lebih fokus dengan Koneksi Java Mysql dengan JDBC berbasis OOP.... untuk tabel model dan list tabel modelnya sama persis kayak Postingan sebelumnya... mangkannya baca dulu lah postingan ane sebelumnya tentang CRUD java... hehehehe


setelah ente mendesain Form sedemikian rupa.. ente bikin 1 Class untuk melakukan koneksi ke Mysql menggunakan JDBC... terserah ente mau kasi apa nama Classnya.. kalo di contoh program kali ini ane kasi nama koneksi jadi koneksi.java...

Tambahkan kode berikut ke dalam Class koneksi..
import java.sql.*;

public class Koneksi {

    public Koneksi() {
        try{
            String username = "root";
            String password = "";
            String database = "kantor";
            String url = "jdbc:mysql://localhost:3306/"+database;
            Class.forName("com.mysql.jdbc.Driver");
            conn = DriverManager.getConnection(url, username, password);
 }catch (SQLException e) {
            System.out.println(e);
 }catch (ClassNotFoundException e) {
            System.out.println(e);
        }
    }

    private Connection conn;
    private Statement stat;

    public ResultSet GetData(String query){
        try{
            stat = conn.createStatement();
            return stat.executeQuery(query);
        }catch(SQLException ex){
            return null;
        }
    }

    public int ManipulasiData(String query){
        try{
            stat = conn.createStatement();
            return stat.executeUpdate(query);
        }catch(SQLException ex){
            return 0;
        }
    }

}
  
kalo ente lihat di Contoh kode program diatas, ane gunakan Constructor untuk membuat koneksi ke database... kemudian untuk mengambil data ane bikin sebuah function "getdata" yang type kembaliannya adalah "Result set" ... kemudian 1 function lagi untuk insert, update dan delete.. kenapa hanya menggunakan 1 function ?? karena proses dan kode program antara insert, update dan delete itu sama, yang beda hanya Query nya... mangkanya cukup dengan 1 Function saja dan mengembalikan nilai bertipe int.. karena jika berhasil melakukan manipulasi data maka akan dikembalikan nilai 1 jika gagal maka 0 ... dan setiap function mempunyai parameter bertipe string... itu untuk menampung Query yang akan di eksekusi.... begitu.. ceritanya... hehehehe
Oke, kemudian tambahkan variabel global berikut pada form yang ente buat tadi, letakkan dibawah Constructor ...
private Koneksi connected = new Koneksi();
    private String query;
    private L_Pegawai pegawai;
    private List<L_Pegawai> list;
    private TableModel model;
    private ResultSet hasil;  

kemudian bangkitkan event FormWindowOpened dan tambahkan kode berikut didalam event itu
try{
            query = "select * from pegawai";
            hasil = connected.GetData(query);
            list = new ArrayList<L_Pegawai>();
            while(hasil.next()){
                pegawai = new L_Pegawai();
                pegawai.setKodePegawai(hasil.getString("kodepegawai"));
                pegawai.setNamaPegawai(hasil.getString("namapegawai"));
                pegawai.setJenisKelamin(hasil.getString("jeniskelamin"));
                list.add(pegawai);
            }
            model = new TmodelPegawai(list);
            jTable1.setModel(model);
        }catch(Exception ex){
            JOptionPane.showMessageDialog(null, ex);
        }  

juga bangkitkan event button Simpan Click dan tambahkan kode program berikut..
try{
            String jk = "";
            if(jRadioButton1.isSelected()){
                jk = "Pria";
            }else if(jRadioButton2.isSelected()){
                jk = "Wanita";
            }else{}

            if(jk.equals("") || txt_nama.getText().equals("") || txt_kode.getText().equals("")){
                JOptionPane.showMessageDialog(null, "Data gak lengkap !!");
            }else{
                query = "insert into pegawai values ('"+txt_kode.getText()+"','"+txt_nama.getText()+"','"+jk+"')";
                int res = connected.ManipulasiData(query);
                if(res == 1){
                    JOptionPane.showMessageDialog(null, "Insert data sukses !!");
                    formWindowOpened(null);
                }
            }
        }catch(Exception ex){
            JOptionPane.showMessageDialog(null, ex);
        }  

N kalo program diatas dijalankan maka akan jadi kayak gini ....



Berhasilkan programnya... hehehee... jadi kalo ente mau melakukan select, insert, update, delete ya tinggal panggil method yang ente butuhin dari class koneksi tadi... hehehehee

buat ente yang pengen download program jadinya ente bisa download disini ... program ini ane jadiin satu sama program CRUD.. hehehee males bikin project lagi soalnya... tapi link nya berbeda kok.. kalo link yang ini ada koneksi OOP nya dan di Package OOP bukan di Package CRUD ya .. happy coding :D

1 comment: