Kali ini saya akan membuat tutorial aplikasi sederhana yang dimana didalamnya terdapat proses Create , Read , Update dan Delete. Sebut saja aplikasi yang akan kita buat adalah buku telephone yang berbasis desktop. Jalankan / start apache dan mysql di xampp , kemudian buka PhpMyAdmin dan buatlah sebuah database. Untuk tutorial membuat database bisa buka link berikut :: Tutorial Database dengan PhpMyAdmin :: .
Buat sebuah project netbeans dengan nama project kontakTelepon, kemudian akan tampil main class KontakTelepon.java. Pada class ini kita akan ganti , sehingga tidak merupakan main class dari project kita. Class ini akan berisi konektor/penghubung program ke database. Untuk membuat koneksi database anda dapat melihat postingan sebelumnya tentang :: Program Koneksi Database di MySQL :: , sehingga saya tidak perlu menjelaskan kembali untuk koneksi. Berikut kode program untuk koneksi databasenya pada class KontakTelepon.java.
/*
* java-sc.blogspot.com
* Hady Eka Saputra <jsc>
*/
package kontaktelepon;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import javax.swing.JOptionPane;
/**
*
* @author jsc
*/
public class KontakTelepon {
Connection conn = null;
public static Connection koneksi() {
String driver = "com.mysql.jdbc.Driver";
String _host = "jdbc:mysql://localhost/jsc-phoneBook";
String _user = "root";
String _pass = "";
try {
Class.forName(driver);
Connection conn = DriverManager.getConnection(_host , _user ,_pass);
return conn;
}
catch (ClassNotFoundException | SQLException e){
JOptionPane.showMessageDialog(null,e);
}
return null;
}
}
Tambah new JFrame Form kedalam package project yang kita buat. Lalu desain JFrame utama seperti gambar berikut. Tutorial video ada di bagian bawah postingan.
Gambar 1 |
Adapun komponen yang kita gunakan untuk membuat Form utama aplikasi buku telpon yaitu diantaranya adalah :
Komponen | Variabel / nama | Fungsi |
---|---|---|
JFrame | formData | Merupakan form utama dari aplikasi buku telepon |
jPanel1 | jPanel1 | Merupakan Panel untuk meletakan komponen jlabel exit, minimize dan title dari aplikasi |
jLabel1 | title | Merupakan label nama aplikasi |
jLabel2 | minimize | Merupakan label untuk meminimize jFrame |
jLabel3 | exit | Merupakan label untuk keluar dari aplikasi |
jPanel2 | jPanel2 | Panel yang digunakan untuk meletakan komponen label tambah, edit d, hapus dan table data |
jLabel4 | addKontak | Label yang berguna untuk membuka new frame |
jLabel5 | editKontak | Label yang berguna untuk membuka frame edit kontak |
jLabel6 | hapusKontak | Label yang berguna untuk menghapus data pada database |
jScrollPane1 | jScrollPane1 | Panel scroller yang secara otomatis ada pada tabel |
jTable1 | readData | Tabel yang berguna untuk menampilkan data dari database |
Untuk setiap membuat action Event mouse click dengan cara klik kanan komponen , pilih events pilih mouse dan klik mouseClicked.
Buat actionEvent pada label exit , hapus komentar pada diantara block tersebut dan ganti dengan kode dibawah , sehingga akan tampil seperti ini.
private void exitMouseClicked(java.awt.event.MouseEvent evt) {
System.exit(0);
}
Buat event mouseClicked pada label minimize dan salin kode program dibawah.
private void minimizeMouseClicked(java.awt.event.MouseEvent evt) {
this.setState(formData.ICONIFIED);
}
Buat new frame lagi , dengan nama frame adalah tambah dan edit, untuk tampilan kedua frame bisa lihat gambar dibawah ini.
Gambar 2 |
Gambar 3 |
Adapun komponen yang kita gunakan adalah, sebagai berikut :
Komponen | Variabel | Fungsi |
---|---|---|
JFrame | JFrame | Meletakan semua komponen |
JPanel1 | jPanel1 | Meletakan komponen jlabel |
jLabel | Dibuat sesuai dengan fungsinya | jLabel digunakan untuk membuat label dari inputan, dan digunakan untuk tombol ubah/tmbah dan batal |
jTextField | Dibuat sesuai kelompoknya | Digunakan untuk tempan penginputan string |
Kembali pada formData , beri event mouseClicked pada label tambah data untuk membuka frame tambah. Lihat kode program di bawah.
private void addKontakMouseClicked(java.awt.event.MouseEvent evt) {
tambah f1 = new tambah();
f1.setVisible(true);
this.setVisible(false);
}
Lakukan juga pada label edit data , dengan kode program seperti berikut. private void editontakMouseClicked(java.awt.event.MouseEvent evt) {
tambah fE = new tambah();
fE.setVisible(true);
this.setVisible(false);
}
Tetap pada bagian source , sekarang kita membuat method untuk menampilkan data pada database ke tabel. Tambahkan kode berikut tepat dibawah,
public class formData extends javax.swing.JFrame {
sehingga akan tampil seperti ini.
public class formData extends javax.swing.JFrame {
Connection conn = null;
ResultSet res = null;
PreparedStatement pst = null;
/**
* Creates new form formData
*/.................................. kode seterusnya!
Selanjutnya pada bagian bawahnya terdapat kode program ,
public formData() { initComponents(); }
Tepat dibawah initComponents(); tambahkan parameter untuk memanggil method koneksi dari class koneksi sehingga kurang lebih akan menjadi seperti ini.
public formData() {
initComponents();
conn = KontakTelepon.koneksi();
}
Barulah kemudian kita membuat method tampil data, kode program diletakan dibawah block (}) kode diatas, berikut kode programnya.
private void dataTable(){
try {
String bacaSemuaData = "SELECT no as 'No', nama as 'Nama', nope as 'Telephone', email as 'E-Mail', bbm as 'Pin BBM', line as 'Id Line', other as 'Other' FROM alldata";
pst = conn.prepareStatement(bacaSemuaData);
res = pst.executeQuery();
readData.setModel(DbUtils.resultSetToTableModel(res));
}
catch (Exception e){
JOptionPane.showMessageDialog(null, e);
}
}
Untuk database anda bisa mengikuti data yang saya berikan ataupun membuat sendiri. Selanjutnya panggil method dataTable() di bawah
conn = KontakTelepon.koneksi();
sehingga pada block formData() saat ini menjadi, public formData() {
initComponents();
conn = KontakTelepon.koneksi();
dataTable();
}
Ketika kita run belum ada data yang tampil karena data masih kosong pada database , untuk menguji coba silahkan tambah satu atau lebih data melalui PhpMyAdmin kemudian running kembali.
Selanjutnya kita akan membuat form penginputan database yang terdapat pada frame tambah. Sebelum ke proses input, terlebih dahulu kita memberi interface Conncetion , ResultSet, dan PreparedStatement. Interface ini diletakan dibawah public class tambah extends javax.swing.JFrame , sama seperti pada frame formData.
public class tambah extends javax.swing.JFrame {
Connection conn = null;
ResultSet res = null;
PreparedStatement pst = null;
Kemudian bangun koneksi ke database, perhatikan kode berikut.
public tambah() {
initComponents();
conn = KontakTelepon.koneksi();
}
Selanjutnya kita akan membuat autonumber , autonumber sendiri digunakan agar mempermudah pemberian nomor. Terutama id / nomor yang bertipe data integer biasanya digunakan sebagai primary key. Namun ini hanya berfungsi untuk data yang terurut saja. Berikut method untuk menggunakan autonumber / penomoran otomatis pada form tambah.
private void autonumber(){
try {
String an = "SELECT MAX(no) FROM alldata";
pst = conn.prepareStatement(an);
res = pst.executeQuery();
if (res.next()){
int a = res.getInt(1);
add_no.setText(Integer.toString(a+1));
}
res.close();
pst.close();
}
catch (Exception e){
JOptionPane.showMessageDialog(null, e);
}
}
Setelah itu panggil method autonumber() , tepat dibawah koneksi.
public tambah() {
initComponents();
conn = KontakTelepon.koneksi();
autonumber();
}
Coba di run frame tambah , kemudian pada no akan tampil angka satu dimana sebelumnya tidak ada data di database. Dan secara otomatis akan bernilai satu, apabila ada data sebelumnya maka akan bertambah kelipatan satu.
Gambar 4 |
Buatlah events mouseClicked pada label tambah , pada bagian sourcenya isi dengan kode program dibawah.
private void tambahMouseClicked(java.awt.event.MouseEvent evt) {
String nama = add_Nama.getText();
String hp = add_Hp.getText();
String mail = add_Mail.getText();
String bbm = add_Bbm.getText();
String line = add_Line.getText();
String other = add_Other.getText();
String queryTambah = "INSERT INTO alldata(no, nama, nope, email, bbm, line, other) "
+ "VALUES (?,?,?,?,?,?,?)";
try {
pst = conn.prepareStatement(queryTambah);
pst.setString(1, add_no.getText());
pst.setString(2, nama);
pst.setString(3, hp);
pst.setString(4, mail);
pst.setString(5, bbm);
pst.setString(6, line);
pst.setString(7, other);
if (nama.isEmpty() || hp.isEmpty() || mail.isEmpty()){
JOptionPane.showMessageDialog(null, "Form Nama , HP dan E-Mail masih kosong");
}
else {
pst.execute();
JOptionPane.showMessageDialog(null, "Data Tersimpan !");
add_Nama.setText(null);
add_Hp.setText(null);
add_Mail.setText(null);
add_Bbm.setText(null);
add_Line.setText(null);
add_Other.setText(null);
autonumber();
}
}
catch (SQLException | HeadlessException e){
JOptionPane.showMessageDialog(null, e);
}
}
Silahkan coba running frame tambah , maka hasilnya akan seperti gambar dibawah.
Gambar 5 |
Pada tombol batal , silahkan beri event mouseClicked dan isi dengan kode program dibawah.
private void batalMouseClicked(java.awt.event.MouseEvent evt) {
formData f1 = new formData();
f1.setVisible(true);
this.dispose();
}
Maka jika kita klik batal, akan kembali ke frame awal. Pada frame awal juga akan tampil data di tabel yang telah saya inputkan sebagai contoh tadi.
Gambar 6 |
Kembali ke frame formData , kita akan memberikan proses edit data pada data yang sudah ada di database. Pada kesempatan contoh program ini saya juga akan menerapkan pengiriman data dari frame satu ke frame lainnya. Silahkan simak dengan seksama kode program yang saya berikan.
Pada label editKontak , ganti kode program sebelumnya dengan kode program dibawah.
private void editontakMouseClicked(java.awt.event.MouseEvent evt) {
edit fE = new edit();
fE.fD = this;
fE.setVisible(true);
this.setVisible(false);
int tabelData = readData.getSelectedRow();
fE.ambilNo = (readData.getValueAt(tabelData, 0).toString());
fE.ambilNama = (readData.getValueAt(tabelData, 1).toString());
fE.ambilNope = (readData.getValueAt(tabelData, 2).toString());
fE.ambilMail = (readData.getValueAt(tabelData, 3).toString());
fE.ambilPin = (readData.getValueAt(tabelData, 4).toString());
fE.ambilLine = (readData.getValueAt(tabelData, 5).toString());
fE.ambilOther = (readData.getValueAt(tabelData, 6).toString());
fE.dataTampil();
}
Kemudian kita beralih ke frame edit, seperti biasa , tambah interface Connection , ResultSet , PreparedStatement dan koneksi pada frame edit. Pada bagian source lakukan pendeklarasian variabel sesuai dengan jumlah data (kolom)
yang ada pada database. Letakan kode berikut di bawah method autonumber()
pada frame formData.
public String ambilNo ,ambilNama , ambilNope , ambilMail , ambilPin , ambilLine , ambilOther;
public String getambilNo(){
return ambilNo;
}
public String getambilNama(){
return ambilNama;
}
public String getambilNope(){
return ambilNope;
}
public String getambilMail(){
return ambilMail;
}
public String getambilPin(){
return ambilPin;
}
public String getambilLine(){
return ambilLine;
}
public String getambilOther(){
return ambilOther;
}
Tepat dibawahnya tambah method untuk menampilkan data yang di panggil ke textField pada frame edit. Berikut kode program method dataTampil().
public void dataTampil(){
edit_no.setText(ambilNo);
edit_Nama.setText(ambilNama);
edit_Hp.setText(ambilNope);
edit_Mail.setText(ambilMail);
edit_Bbm.setText(ambilPin);
edit_Line.setText(ambilLine);
edit_Other.setText(ambilOther);
}
Panggil method dataTampil() dibawah autonumber() , perhatikan kode program dibawah.
public edit() {
initComponents();
conn = KontakTelepon.koneksi();
autonumber();
dataTampil();
}
Beri events mouseClicked pada label ubah, kemudian ketikan kode program untuk update database dibawah ini.
private void ubahMouseClicked(java.awt.event.MouseEvent evt) {
String no = edit_no.getText();
String nama = edit_Nama.getText();
String hp = edit_Hp.getText();
String mail = edit_Mail.getText();
String bbm = edit_Bbm.getText();
String line = edit_Line.getText();
String other = edit_Other.getText();
String queryUpdate = "UPDATE alldata SET nama='"+nama+"',nope='"+hp+"',"
+ "email='"+mail+"',bbm='"+bbm+"',line='"+line+"',other='"+other+"' WHERE no='"+no+"'";
try {
pst = conn.prepareStatement(queryUpdate);
pst.execute();
JOptionPane.showMessageDialog(null, "Berhasil di update");
}
catch (SQLException | HeadlessException e){
JOptionPane.showMessageDialog(null, e);
}
}
Untuk uji coba silahkan running kembali frame utama kemudian klik salah satu baris, perhatikan contoh pada gambar dibawah ini.
Gambar 7 |
private void hapusKontakMouseClicked(java.awt.event.MouseEvent evt) {
String queryDelete = "DELETE FROM alldata WHERE no=?";
int tabelData = readData.getSelectedRow();
try {
pst = conn.prepareStatement(queryDelete);
pst.setString(1, readData.getValueAt(tabelData, 0).toString());
pst.execute();
JOptionPane.showMessageDialog(null, "Haous");
}
catch (SQLException | HeadlessException e){
JOptionPane.showMessageDialog(null, e);
}
dataTable();
}
Untuk menghapus data, klik terlebih dahulu data yang akan dihapus kemudian klik tombol hapus , perhatikan gambar dibawah.
Gambar 8 |
Sebelumnya saya mohon maaf apabila ada kesalahan pengetikan, atau ada kerancuan kata. Jika hal itu terjadi maka silahkan menanggapi melalui komentar dan kita berdiskusi mengenai contoh program yang saya buat ini.
Bagus sekali mau berbagi ilmu Gan,
BalasHapusThanks support nya bang :2thumbup
Hapusbagus gan.. membantu sekali buat newbie
BalasHapussemoga bisa selalu membantu gan :)
Hapussaya baru coba , tapi kok pas dibagian Dbutils nya cannot find symbol ya gan?
BalasHapusada salah pengetikan pada baris tersebut mas..
HapusSaya mau coba baut lagi semoga nanti siang selesai
Hapusjangan lupa librarynya di import ya mas, dan penggunaan variabel jug mesti di perhatikan..
Hapusmakasih gan tutorialnya bermanfaat untuk pemula... :2thumbup
BalasHapusthanks mas sdh berbagi,,
BalasHapusmas mau tanya itu var FD didapat darimna ya, yang di editkontakMouseClicked. Terimakasih
BalasHapusvariabel FD dari mana yaa?
BalasHapusini variable fD dapet darimana ya mas?
BalasHapuspada button ubah
super gan, thanks !!!
BalasHapusNice pos gan
BalasHapuskunjungi juga https://spacexzone.com/
mantap jiwaa !
BalasHapusmakasih gan (y)
DbUtils itu apa ya gan?
BalasHapusDbUtils itu class dari library rs2xml.jar yang bantu kita buat nampilin data pada database ke dalam JTabel gan.
Hapuskak FD itu variabel apa ya?
BalasHapus