bybahrieinJava,Java Programming,Netbeans,PemrogramanKaitkata:aplikasi database sederhana dijava,aplikasi gui java sederhana,belajar konsep jdbc,belajar mudah dao jdbc java,mudah belajar konsep jdbc Sudah lama saya ingin memostingkan hal ini tapi blum kesampean karena terlalu rumit untukdi posting..hehe semoga hari ini bisa terpostingkan dengan baik.. Disini saya menggunakan database MySQL. dan DAO(Data akses object) menggukan JDBC(java database connection) serta editornya menggunakan IDE Netbeans 6.9 . program ini bagus untuk belajar konsep jdbc atau konsep koneksi database dijava, karena frameworkyang beredar untuk memudahkan dalam urusan database juga pada dasarnya adalah jdbc. dan supaya kalau saya lupa bisa buka blog saja dari pada buka program dinetbeans..hehee,, program ini sudah berupa GUI (grapical user interface) jadi mudah untuk pahami dan di analisis.. untuk dibawah ini saya berikan sourcodenya, dan untuk analisis sourcecode ataupun alasisis programnyaada disini.pertama kita buat databasenya dahulu. silahkan masuk keroo t database anda..menggunakan console/command prompt bisa atau menggunakan phpmyadmin juga boleh : dibawah s aya contohkan yang menggunakan console. >create database sisteminformasi; >use sisteminformasi; >create table mahasiswa(nim varchar(15) primary key not null, nama varchar(50) not null, alamat varchar(100) not null);
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
public void connect() throws SQLException; public void disconnect() throws SQLException; public List read() throws SQLException; public void insert(Mahasiswa mahasiswa) throws SQLException; public void update(String nim, Mahasiswa mahasiswa) throws
SQLException; public void delete(String nim) throws SQLException; public Mahasiswa read(String nim) throws SQLException;
}
setelah interface kita buat DAO nya dengan nama class DaoMySql.java
public DaoMySql(Connection conn) {this.conn = conn;
}
public void connect() throws SQLException {this.conn = DriverManager.getConnection(dbHost, dbUser, dbPass);
}
public void disconnect() throws SQLException {this.conn.close();
}
public List read() throws SQLException {Statement st = conn.createStatement();String sql = "select *from mahasiswa";ResultSet rs = st.executeQuery(sql);List list = new ArrayList(); while (rs.next()) {
Mahasiswa mhs = new Mahasiswa(); mhs.setNim(rs.getString("nim")); mhs.setNama(rs.getString("nama")); mhs.setAlamat(rs.getString("alamat"));list.add(mhs);
}return list;
}
public void insert(Mahasiswa mahasiswa) throws SQLException {String sql = "insert into mahasiswa (nim, nama, alamat)
public TableModelMahasiswa getTableModelMahasiswa() {return tableModelMahasiswa;
}
public void setTableModelMahasiswa(TableModelMahasiswatableModelMahasiswa) {
this.tableModelMahasiswa = tableModelMahasiswa;}
void loadData() {try {
daoMysql.connect();List list = new ArrayList();list = daoMysql.read();TableModel tableModel = new TableModelMahasiswa(list);tabelMhs.setModel(tableModel);daoMysql.disconnect();
records = daoMysql.read(); Mahasiswa mahasiswa = records.get(index);
String nim = mahasiswa.getNim(); Mahasiswa mhs = daoMysql.read(nim);txtNim.setText(mhs.getNim());txtNama.setText(mhs.getNama());txtAlamat.setText(mhs.getAlamat()); buttonUptade.setText("Simpan");
} else { Mahasiswa mhs1 = new Mahasiswa(); mhs1.setNim(txtNim.getText()); mhs1.setNama(txtNama.getText()); mhs1.setAlamat(txtAlamat.getText());if (JOptionPane.showConfirmDialog(this, "apakah anda yakin
untuk melakukan update", "konfirmasi update", JOptionPane.OK_CANCEL_OPTION)== 0) {
daoMysql.update(records.get(index).getNim(), mhs1);loadData();this.kosongkanTeks(); buttonUptade.setText("Update");JOptionPane.showMessageDialog(this, "Data berhasil di
dalam sourcecode diatas terdapat metode yang berawalan set dan get. metode tersebut adalah
mekanisme class java untuk melalukan masukan data dan ambil data dari variable yang ada
diclass. ini adalah salah satu prinsip inkapsulasi dijava. jadi tidak sembarng class yang bisa
langsung mengisi atau menghapus data yang ada di variable. harus melalui proses setter dan
getter untuk mengambil dan mengisi data ke variable yang ad didlam kelas. ini untuk
melindungi data yang ada diclass.
class inilah yang nantinya akan menjadi jembatan antara data yang ada didatabase dengan
aplikasi yang sedang berjalan. gambarannya begini, data yang diinputkan di aplikasi pertama-
tama masuk ke class Mahasiswa, lalu DAO(data akses objek) nya mengambil data dari kelas
untuk dimasukkan ke dalam database..
jadi data yang masuk ke database juga harus melalui proses yang benar. ini adalah tahap-
tahap standar dijava karena java sudah punya konsep yang stabil. dengan demikian data yangmasuk kedalam database bukan dari yang langsung dari aplikasi, tapi diolah dulu dijadikan
objek untuk seterusnya dipindahkan ke database. cara ini bukan bermaksud memperlama
proses namun dibalik itu semua banyak keuntungan keuntungan dan kemudahan dalam
proses selanjutnya.
setelah class yang merepresentasikan table selesai. selanjutnya kita buat Interface. untuk
maslah apa itu interface sudah pernah saya bahas dipostingan sebelumnya. interface disini
dimksudkan untuk membuat aturan-aturan yang nanti akan di implementasikan oleh class
DOA. Interface disini tidak hanya untuk di implementasikan class DAO saja, tapi bisa
diimplementasikan oleh class class lain yang mempunyai cara kerja yang sama atau yang
mempunyai aturan yang sama. contoh kita mempunyai interface database yang isi metodenya ada insert, update delete. nah interface ini dapat di implementasikan kedalam class DOA
untuk Mysql, Oracle, Postgres, ataupun databse lainnya..cuma dalam statemennya yang
berbeda.. interface ini nantinya yang akan memudahkan kita untuk memakai konsep
polimorfism(merubah bentuk) dalam java. karena dengan interface kita mudah untuk
merubah rubah bentuk objek. yang dulunya databsenya mysql, sekrang pengen oracle jadi
mudah.. karena sudah ada interfacenya tinggal ganti instansiasinya, yang tadinya ke mysql
sekarrng ke oracle.
dalam contoh program yg sdg dianalisis ini interface serta implementasinya dapat dilihat
public void disconnect() throws SQLException; public List read() throws SQLException; public void insert(Mahasiswa mahasiswa) throws SQLException; public void update(String nim, Mahasiswa mahasiswa) throws
SQLException; public void delete(String nim) throws SQLException;
public Mahasiswa read(String nim) throws SQLException;}
Statement st = conn.createStatement();String sql = "select *from mahasiswa";ResultSet rs = st.executeQuery(sql);List list = new ArrayList(); while (rs.next()) {
Mahasiswa mhs = new Mahasiswa(); mhs.setNim(rs.getString("nim")); mhs.setNama(rs.getString("nama")); mhs.setAlamat(rs.getString("alamat"));list.add(mhs);
}return list;
}
public void insert(Mahasiswa mahasiswa) throws SQLException {String sql = "insert into mahasiswa (nim, nama, alamat)
setelah interface dan implementasinya selesai. selanjutnya kita buat viewnya atau GUI nya
atau Visualnya : dapat dilihat dibawah visual yang saya buat :
sebelum kita koding dibalik guinya kita buat dulu tablemodel untuk mempermudah data
masuk kedalam tabel yang ad di gui tersebut.
data yang tampil di table GUI tersebut nanti yang ngurusin adalah si tablemodel tersebut.
nanti table guinya tinggal panggil aja tuh table model. tabelmodel ini nantinya yang
mengurusi berapa jumlah kolom dan row yang dibutuhkan dan nama setiap kolom juga diatur
disini dengan cara mengoverride yang sudah ada menjadi nama kolom yang kita inginkan.
disini nama kolom-kolomnya dalah nim, nama , dan alamat. prosesnya sebagai berikut : data yang didalam tabel database diload kedalam list yang ada
ditablemodel. lalu list tersebut nanti yang akan dipakai untuk ditampilkan di guinya. kalau
data yang ada ditabel database ada 10 row maka list tersebut juga terdapat 10 row dan
seterusnya.. untuk kolomnya sudah ditentuin terlebih dahulu karena kita yang buat. untuk
tabel ini kita buat 3 kolom karena hanya nim,nama, dan alamat. selanjutnya untuk mengisi
kedalam row dan colom kita menggunakan swicth(percabangan didalam java). jadi bila row 1
dan kolom 0 maka yang ditampilin adalah list.get(rowIndex).getNim(); lalu row 1 colom 1
list.get(rowIndex).getNama(); dan row 1 colom 2 list.get(rowIndex).getAlamat();
disini kolom dimulai dari angka nol(0) jadi kalo ada tiga kolom cara menyebutkannya adalah
0,1,2.
lalu setelah itu kita buat nama kolom sesuai yang kita inginkan sengan car overridecolomname. disourcecode bisa dilihat yang ada tanda @override. caranya juga hampir sama
setelah itu kita masuk ke koding GUInya..disetiap tombol diclik kanan pilih event terusaction nanti akan masuk kedalam bagian belakangnya GUInya. untuk tombol tambah, intinya
tombol ini yang nantinya akan mengirim data yang ada di teksfield masuk kedalam class
Mahasiswa lalu dimasukkan kedlam database. lalu database diambil dimasukkan kedlam
class Mahasiswa lagi dan di masukkan kedalam list yang ada didalam tabelmodel dan
ditampilkan lagi ke tabel yang ada diGUI.
untuk tombol update juga prinsipnya sama. data yang dipilih lalu masuk kedalam teksfield
dan diubah lalu di kirim ke class Mahasiswa dan diupdatekan ke database lalu dari database
masuk lagi ke class Mahasiswa dan dimasukan ke tabelmodel dan dipanggil ke GUI untuk
ditampilkan.. untuk delete juga. data yang dipilih dibaca primary keynya lalu di hapus dari
database. setelah itu databse menuju class Mahasiswa. mahasiswa menuju tabelmodel dan
tabelmodel menuju tabel yang ada diGUi untuk ditampilkan. dibawah ini akan saya pisah- pisah sourcecode untuk tiap tombol. untuk pertama kelas gui ini dibuka juga terdapat perintah
yang tidak boleh ditinggalkan.
untuk variable dan code yang dibutukan setelah class gui dijalankan :
DataInterface daoMysql = new DaoMySql();
TableModelMahasiswa tableModelMahasiswa;
List records = new ArrayList();
/** Creates new form Contoh */
public Contoh() {
initComponents();
loadData();// ini adlah metode yang saya buat ad dibawah. bisa
langsung dipanggil.
}
void kosongkanTeks() {
txtNim.setText("");
txtNama.setText("");
txtAlamat.setText("");
}
public TableModelMahasiswa getTableModelMahasiswa() {
return tableModelMahasiswa;
}
public void setTableModelMahasiswa(TableModelMahasiswa
tableModelMahasiswa) {
this.tableModelMahasiswa = tableModelMahasiswa;
}
void loadData() {
try {
daoMysql.connect();
List list = new ArrayList();
list = daoMysql.read();
TableModel tableModel = new TableModelMahasiswa(list);tabelMhs.setModel(tableModel);
// TODO add your handling code here:daoMysql.connect(); Mahasiswa mhs = new Mahasiswa(); mhs.setNim(txtNim.getText()); mhs.setNama(txtNama.getText()); mhs.setAlamat(txtAlamat.getText());daoMysql.insert(mhs);
try {daoMysql.connect();int index = tabelMhs.getSelectedRow();if (buttonUptade.getText().equals("Update")) {
records = daoMysql.read(); Mahasiswa mahasiswa = records.get(index);String nim = mahasiswa.getNim(); Mahasiswa mhs = daoMysql.read(nim);txtNim.setText(mhs.getNim());txtNama.setText(mhs.getNama());txtAlamat.setText(mhs.getAlamat()); buttonUptade.setText("Simpan");
} else { Mahasiswa mhs1 = new Mahasiswa(); mhs1.setNim(txtNim.getText()); mhs1.setNama(txtNama.getText()); mhs1.setAlamat(txtAlamat.getText());if (JOptionPane.showConfirmDialog(this, "apakah anda yakin
untuk melakukan update", "konfirmasi update", JOptionPane.OK_CANCEL_OPTION)== 0) {
daoMysql.update(records.get(index).getNim(), mhs1);loadData();this.kosongkanTeks(); buttonUptade.setText("Update");JOptionPane.showMessageDialog(this, "Data berhasil di