Membangun Aplikasi Sederhana Menggunakan Java &
MySQL
Pembuatan aplikasi database menggunakan Java & MySQL.
Sebagai contoh saya akan membuat aplikasi Buku Telepon Sederhana. Dimana memuat
data Nama, No Telepon, dan e-mail.
Dalam pembuatannya saya menggunakan apliaksi Netbeans 7.0
dan paket XAMPP.
Jadi sebelum Anda mencoba tutorial ini, install terlebih
dahulu aplikasi-aplikasi tersebut.
Langsung saja,
1. Untuk langkah awalnya. Buka web browser favorit Anda dan
masuk ke phpmyadmin (ketikkan localhost/phpmyadmin pada address bar web
browser). Kemudian buat Database dengan nama kontak_db
2. Selanjutnya adalah pembuatan table pada kontak_db
dengan nama tb_kontak. Masukkan nama tabel dan jumlah field.
3. Masukkan parameter setiap field seperti gambar di bawah
ini.
Kemudian Klik tombol Save
Setelah selesai membuat Database, tutup web browser Anda
Langkah berikutnya adalah tahap
pembuatan Aplikasinya.
4. Buka NetBeans. Buat Project Baru.
4. Buka NetBeans. Buat Project Baru.
5. Beri Nama Project dengan Buku Telepon Sederhana. Saya
menonaktifkan pembuatan Main Class. Setelah selesai, Klik Finish.
6. Selanjutnya Buat Form, dengan
cara Klik Kanan pada Project -> New -> JFrame Form
7. Beri nama Frame dengan FrameKontak.
Klik Finish.
8. Desain Form kurang lebih seperti gambar di bawah ini.
Berikut Komponen dan
Properti-propertinya:
Komponen
|
Properties
|
Nilai
|
jFrame
|
title
|
Buku
Telepon Sederhana
|
rezizable
|
false
|
|
jLabel1
|
text
|
Buku
Telepon Sederhana
|
jLayeredPanel1
|
border
|
Titled
Border (Title = Kontak)
|
jLabel2
|
text
|
Nama
|
jTextField1
|
text
|
|
Variable
Name
|
TxtNama
|
|
jLabel3
|
text
|
Telepon
|
jTextField2
|
text
|
|
Variable
Name
|
TxtTelepon
|
|
jLabel4
|
text
|
e-mail
|
jTextField3
|
text
|
|
Variable
Name
|
TxtEmail
|
|
jLayeredPanel2
|
border
|
Titled
Border (Title = Tombol)
|
jButton1
|
text
|
Simpan
|
Variable
Name
|
BtnSimpan
|
|
jButton2
|
text
|
Ubah
|
Variable
Name
|
BtnUbah
|
|
jButton3
|
text
|
Hapus
|
Variable
Name
|
BtnHapus
|
|
jLayeredPanel3
|
border
|
Titled
Border (Title = Daftar Kontak)
|
jTable1
|
Variable
Name
|
TblKontak
|
jLayeredPanel4
|
border
|
Titled
Border (Title = Cari Kontak)
|
jLabel5
|
text
|
Cari
berdasarkan
|
jComboBox1
|
model
|
nama
telepon
e_mail
|
Variable
Name
|
CmbCari
|
|
jTextField4
|
text
|
|
Variable
Name
|
TxtCari
|
Berikut adalah cara untuk merubah
nilai properties pada jLayeredPanel
Jika bingung dalam memberi nilai pada Variable Name, berikut adalah caranya.
Klik Kanan pada Komponen -> Change Variable Name
Hasil dari layouting akhir
9. Untuk dapat terkoneksi dengan database, pada Java telah disediakan Library MySQL JDBC Driver. Kita tinggal meng-import-nya saja. Klik Kanan pada folder Libraries yang ada Pada Project. Klik tombol Import. Cari Library MySQL JDBC Driver, Kemudian Klik Import Library. Klik Add Library.
10. Selanjutnya buat Package baru
dengan cara Klik Kanan pada Project -> New -> Java Package.
Beri nama Tabel. Klik Finish.
11. Buat Class baru pada Package
Tabel. Klik Kanan pada Package Tabel -> New -> Java Class.
Beri nama DataKontak. Klik Finish.
12. Buat juga class TabelDataKontak
pada Package Tabel.
Struktur dari project sekarang terlihat seperti gambar berikut.
Struktur dari project sekarang terlihat seperti gambar berikut.
Setelah selesai, selanjutnya adalah pemberian
script.
class DataKontak:
package Tabel;
/**
*
* @author TheGunk
*/
public class DataKontak {
private String nama, telepon, e_mail;
public DataKontak(){
}
public String getE_mail() {
return e_mail;
}
public void setE_mail(String e_mail) {
this.e_mail = e_mail;
}
public String getNama() {
return nama;
}
public void setNama(String nama) {
this.nama = nama;
}
public String getTelepon() {
return telepon;
}
public void setTelepon(String telepon) {
this.telepon = telepon;
}
}
/**
*
* @author TheGunk
*/
public class DataKontak {
private String nama, telepon, e_mail;
public DataKontak(){
}
public String getE_mail() {
return e_mail;
}
public void setE_mail(String e_mail) {
this.e_mail = e_mail;
}
public String getNama() {
return nama;
}
public void setNama(String nama) {
this.nama = nama;
}
public String getTelepon() {
return telepon;
}
public void setTelepon(String telepon) {
this.telepon = telepon;
}
}
class TabelDataKontak:
package Tabel;
/**
*
* @author TheGunk
*/
import java.util.ArrayList;
import java.util.List;
import javax.swing.table.AbstractTableModel;
public class TabelDataKontak extends AbstractTableModel{
private List<DataKontak> list = new ArrayList<DataKontak>();
@Override
public int getRowCount() {
return list.size();
}
@Override
public int getColumnCount() {
return 3;
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
switch(columnIndex){
case 0 : return list.get(rowIndex).getNama();
case 1 : return list.get(rowIndex).getTelepon();
case 2 : return list.get(rowIndex).getE_mail();
default : return null;
}
}
@Override
public String getColumnName(int kolom){
switch(kolom){
case 0 : return "Nama";
case 1 : return "HP/Telepon";
case 2 : return "e-mail";
default : return null;
}
}
public void add(DataKontak kontak){
list.add(kontak);
fireTableRowsInserted(getRowCount(), getColumnCount());
}
public void delete(int i, int baris){
list.remove(i);
fireTableRowsDeleted(i, baris);
}
public DataKontak get(int baris){
return (DataKontak) list.get(baris);
}
}
/**
*
* @author TheGunk
*/
import java.util.ArrayList;
import java.util.List;
import javax.swing.table.AbstractTableModel;
public class TabelDataKontak extends AbstractTableModel{
private List<DataKontak> list = new ArrayList<DataKontak>();
@Override
public int getRowCount() {
return list.size();
}
@Override
public int getColumnCount() {
return 3;
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
switch(columnIndex){
case 0 : return list.get(rowIndex).getNama();
case 1 : return list.get(rowIndex).getTelepon();
case 2 : return list.get(rowIndex).getE_mail();
default : return null;
}
}
@Override
public String getColumnName(int kolom){
switch(kolom){
case 0 : return "Nama";
case 1 : return "HP/Telepon";
case 2 : return "e-mail";
default : return null;
}
}
public void add(DataKontak kontak){
list.add(kontak);
fireTableRowsInserted(getRowCount(), getColumnCount());
}
public void delete(int i, int baris){
list.remove(i);
fireTableRowsDeleted(i, baris);
}
public DataKontak get(int baris){
return (DataKontak) list.get(baris);
}
}
Tambahkan Script berikut pada class FrameKontak:
import Tabel.DataKontak;
import Tabel.TabelDataKontak;
import java.sql.Connection;import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JOptionPane;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
public class FrameKontak extends javax.swing.JFrame{
public class FrameKontak
extends javax.swing.JFrame{
private Connection koneksi;
private Statement script;
private TabelDataKontak ModelDataKontak;
/** Creates new from FrameKontak */
public FrameKontak( ) {
private Statement script;
private TabelDataKontak ModelDataKontak;
/** Creates new from FrameKontak */
public FrameKontak( ) {
initComponents( );
ModelDataKontak = new TabelDataKontak();
TblKontak.setModel(ModelDataKontak);
KoneksiDb( );
tampil( );
bersih( );
}
*catatan:
TEXT BERWARNA BIRU ADALAH SCRIPT YANG TELAH DIBUATKAN OLEH NETBEANS.
Selanjutnya tambahkan script berikut di bawah blok Konstruktor FrameKontak (setelah BLOK class FrameKontak extends javax.swing.JFrame).
TEXT BERWARNA BIRU ADALAH SCRIPT YANG TELAH DIBUATKAN OLEH NETBEANS.
Selanjutnya tambahkan script berikut di bawah blok Konstruktor FrameKontak (setelah BLOK class FrameKontak extends javax.swing.JFrame).
private void KoneksiDb( ){ try{
Class.forName("com.mysql.jdbc.Driver");
koneksi = DriverManager.getConnection("jdbc:mysql://localhost/kontak_db", "root", " ");
script = koneksi.createStatement( );
}
catch(SQLException ex){
System.err.print(ex);
}
catch(ClassNotFoundException ex){
System.err.print(ex);
}
}
private void tampil( ){
try{
int baris = TblKontak.getRowCount( );
for(int i=0; i<baris; i++){
ModelDataKontak.delete(0, baris);
}
String sql = "select * from tb_kontak";
ResultSet rs = script.executeQuery(sql);
while (rs.next( )){
DataKontak kontak = new DataKontak( );
kontak.setNama(rs.getString(1));
kontak.setTelepon(rs.getString(2));
kontak.setE_mail(rs.getString(3));
ModelDataKontak.add(kontak);
}
}
catch(SQLException ex){
System.err.print(ex);
}
}
private void bersih( ){
TxtNama.setText(null);
TxtTelepon.setText(null);
TxtEmail.setText(null);
TxtCari.setText(null);
BtnSimpan.setEnabled(true);
BtnUbah.setEnabled(false);
BtnHapus.setEnabled(false);
}
private void tabel( ){
TblKontak.getSelectionModel( ).addListSelectionListener(new ListSelectionListener( ) {
@Override
public void valueChanged(ListSelectionEvent e) {
int baris = TblKontak.getSelectedRow( );
if(baris != -1){
DataKontak kontak = ModelDataKontak.get(baris);
TxtNama.setText(kontak.getNama( ));
TxtTelepon.setText(kontak.getTelepon( ));
TxtEmail.setText(kontak.getE_mail( ));
}
}
});
BtnSimpan.setEnabled(false);
BtnUbah.setEnabled(true);
BtnHapus.setEnabled(true);
}
private void simpan( ){
try{
String sql = "insert into tb_kontak values ("
+"'"+TxtNama.getText( )+"',"
+"'"+TxtTelepon.getText( )+"',"
+"'"+TxtEmail.getText( )+"'"
+")";
script.executeUpdate(sql);
tampil( );
JOptionPane.showMessageDialog(null, TxtNama.getText( )+" berhasil Disimpan");
bersih( );
}
catch(SQLException ex){
JOptionPane.showMessageDialog(this, "No Telepon sudah Ada");
bersih();
}
}
private void ubah( ){
int app;
if((app = JOptionPane.showConfirmDialog(null, "Ubah kontak"
+" ?","Perhatian",JOptionPane.YES_NO_OPTION))==0){
try{
String sql = "update tb_kontak set"
+" nama = '"+TxtNama.getText()+"',"
+" e_mail = '"+TxtEmail.getText()+"' where"
+" telepon = '"+TxtTelepon.getText()+"'";
script.executeUpdate(sql);
tampil( );
JOptionPane.showMessageDialog(null, "Kontak berhasil dirubah");
bersih( );
}
catch(SQLException ex){
System.err.print(ex);
}
}
}
private void hapus( ){
int app, bantu;
if((app = JOptionPane.showConfirmDialog(null, "Hapus data"
+" ?","Perhatian",JOptionPane.YES_NO_OPTION))==0){
try{
String sql = "delete from tb_kontak where"
+" nama = '"+TxtNama.getText()+"'";
bantu = script.executeUpdate(sql);
tampil( );
JOptionPane.showMessageDialog(null, "Kontak berhasil dihapus");
bersih( );
}
catch(SQLException ex){
System.err.print(ex);
}
}
}
private void cari( ){
int baris = TblKontak.getRowCount( );
String bantu = CmbCari.getSelectedItem( ).toString( );
for(int i=0; i<baris; i++){
ModelDataKontak.delete(i, baris);
}
try{
String sql = "select * from tb_kontak where "
+bantu+" like '%"+TxtCari.getText()+"%'";
ResultSet rs = script.executeQuery(sql);
while(rs.next( )){
DataKontak kontak = new DataKontak( );
kontak.setNama(rs.getString(1));
kontak.setTelepon(rs.getString(2));
kontak.setE_mail(rs.getString(3));
ModelDataKontak.add(kontak);
}
}
catch(SQLException ex){
System.err.print(ex);
}
}
Class.forName("com.mysql.jdbc.Driver");
koneksi = DriverManager.getConnection("jdbc:mysql://localhost/kontak_db", "root", " ");
script = koneksi.createStatement( );
}
catch(SQLException ex){
System.err.print(ex);
}
catch(ClassNotFoundException ex){
System.err.print(ex);
}
}
private void tampil( ){
try{
int baris = TblKontak.getRowCount( );
for(int i=0; i<baris; i++){
ModelDataKontak.delete(0, baris);
}
String sql = "select * from tb_kontak";
ResultSet rs = script.executeQuery(sql);
while (rs.next( )){
DataKontak kontak = new DataKontak( );
kontak.setNama(rs.getString(1));
kontak.setTelepon(rs.getString(2));
kontak.setE_mail(rs.getString(3));
ModelDataKontak.add(kontak);
}
}
catch(SQLException ex){
System.err.print(ex);
}
}
private void bersih( ){
TxtNama.setText(null);
TxtTelepon.setText(null);
TxtEmail.setText(null);
TxtCari.setText(null);
BtnSimpan.setEnabled(true);
BtnUbah.setEnabled(false);
BtnHapus.setEnabled(false);
}
private void tabel( ){
TblKontak.getSelectionModel( ).addListSelectionListener(new ListSelectionListener( ) {
@Override
public void valueChanged(ListSelectionEvent e) {
int baris = TblKontak.getSelectedRow( );
if(baris != -1){
DataKontak kontak = ModelDataKontak.get(baris);
TxtNama.setText(kontak.getNama( ));
TxtTelepon.setText(kontak.getTelepon( ));
TxtEmail.setText(kontak.getE_mail( ));
}
}
});
BtnSimpan.setEnabled(false);
BtnUbah.setEnabled(true);
BtnHapus.setEnabled(true);
}
private void simpan( ){
try{
String sql = "insert into tb_kontak values ("
+"'"+TxtNama.getText( )+"',"
+"'"+TxtTelepon.getText( )+"',"
+"'"+TxtEmail.getText( )+"'"
+")";
script.executeUpdate(sql);
tampil( );
JOptionPane.showMessageDialog(null, TxtNama.getText( )+" berhasil Disimpan");
bersih( );
}
catch(SQLException ex){
JOptionPane.showMessageDialog(this, "No Telepon sudah Ada");
bersih();
}
}
private void ubah( ){
int app;
if((app = JOptionPane.showConfirmDialog(null, "Ubah kontak"
+" ?","Perhatian",JOptionPane.YES_NO_OPTION))==0){
try{
String sql = "update tb_kontak set"
+" nama = '"+TxtNama.getText()+"',"
+" e_mail = '"+TxtEmail.getText()+"' where"
+" telepon = '"+TxtTelepon.getText()+"'";
script.executeUpdate(sql);
tampil( );
JOptionPane.showMessageDialog(null, "Kontak berhasil dirubah");
bersih( );
}
catch(SQLException ex){
System.err.print(ex);
}
}
}
private void hapus( ){
int app, bantu;
if((app = JOptionPane.showConfirmDialog(null, "Hapus data"
+" ?","Perhatian",JOptionPane.YES_NO_OPTION))==0){
try{
String sql = "delete from tb_kontak where"
+" nama = '"+TxtNama.getText()+"'";
bantu = script.executeUpdate(sql);
tampil( );
JOptionPane.showMessageDialog(null, "Kontak berhasil dihapus");
bersih( );
}
catch(SQLException ex){
System.err.print(ex);
}
}
}
private void cari( ){
int baris = TblKontak.getRowCount( );
String bantu = CmbCari.getSelectedItem( ).toString( );
for(int i=0; i<baris; i++){
ModelDataKontak.delete(i, baris);
}
try{
String sql = "select * from tb_kontak where "
+bantu+" like '%"+TxtCari.getText()+"%'";
ResultSet rs = script.executeQuery(sql);
while(rs.next( )){
DataKontak kontak = new DataKontak( );
kontak.setNama(rs.getString(1));
kontak.setTelepon(rs.getString(2));
kontak.setE_mail(rs.getString(3));
ModelDataKontak.add(kontak);
}
}
catch(SQLException ex){
System.err.print(ex);
}
}
Catatan:
Pada script di atas, terdapat script
Pada script di atas, terdapat script
koneksi =
DriverManager.getConnection("jdbc:mysql://localhost/kontak_db","root","");
saya memberikan nilai username=root,
dan password tidak saya isi menyesuaikan konfigurasi phpmyadmin. Silahkan Anda
sesuaikan dengan konfigurasi phpmyadmin Anda.
Untuk menambahkan fungsi masing-masing pada setiap tombol (button) yang kita desain, dengan cara.
Klik kanan Button -> Events -> Action -> actionPerformed
Untuk menambahkan fungsi masing-masing pada setiap tombol (button) yang kita desain, dengan cara.
Klik kanan Button -> Events -> Action -> actionPerformed
Script untuk Button Simpan
simpan();
Script untuk Button Ubah
ubah();
Script untuk Button Hapus
hapus();
Penambahan fungsi klik pada Tabel.
Klik Kanan Tabel -> Events -> Mouse -> mousePressed
Script untuk TblKontak
tabel();
Penambahan pencarian pada TxtCari
Klik kanan TxtCari -> Events -> Key -> keyReleased
Script untuk TxtCari
cari();
Saya tambahkan script berikut, untuk merubah tampilan tema default menjadi windows
(letakkan script di bawah ini sebelum method initComponents(); )
try {
for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
if ("Windows".equals(info.getName())) {
UIManager.setLookAndFeel(info.getClassName());
break;
}
}
}
catch (Exception ex) {
ex.getMessage();
}
initComponents();
for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
if ("Windows".equals(info.getName())) {
UIManager.setLookAndFeel(info.getClassName());
break;
}
}
}
catch (Exception ex) {
ex.getMessage();
}
initComponents();
Build & Jalankan Program.
Tidak ada komentar:
Posting Komentar