Penjelasan tutorial sebelumnya penulis memberikan mengenai penyimpanan sementara menggunakan ArrayList
dengan arsitektur MVP berkaitan tentang aplikasi penjualan, nahh di penjelasan kali ini berkaitan sama hanya berbeda pada penggunaan penyimpanan yang menggunakan Database MYSQL
, Lebih jelasnya anda bisa melihat step by stap pembuatan di tutorial berikut.
Anda bisa ikuti tutorial di atas, jika malas ketik code anda bisa copy langsung code dibawah
Koneksi
Membuat koneksi dari databases, sebelum anda kerjakan kode dibawah anda harus tambahkan library
JDBC sesuai intruksi dari video.
package koneksi;
import com.mysql.jdbc.Driver;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import javax.swing.JOptionPane;
public class Koneksi {
private Connection con;
private String url = "jdbc:mysql://localhost:3306/penjualan_laptop";
private String user = "root";
private String pass = "";
public Koneksi() {
if (con == null) {
try {
DriverManager.registerDriver(new Driver());
con = DriverManager.getConnection(url, user, pass);
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, ex.getMessage());
}
}
}
public Connection getCon() {
return con;
}
public static void main(String[] args) {
new Koneksi();
}
}
Model Barang
Anda buat class Barang untuk menampung data dari semua variable yang digunakan
package barang;
/**
*
* @author kodetr
*/
public class Barang {
private int id;
private String nama;
private String deskripsi;
private int harga;
private int stok;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getNama() {
return nama;
}
public void setNama(String nama) {
this.nama = nama;
}
public String getDeskripsi() {
return deskripsi;
}
public void setDeskripsi(String deskripsi) {
this.deskripsi = deskripsi;
}
public int getHarga() {
return harga;
}
public void setHarga(int harga) {
this.harga = harga;
}
public int getStok() {
return stok;
}
public void setStok(int stok) {
this.stok = stok;
}
}
Barang Interface
Buat interface dengan nama BarangInterface
, sebagai refrensi dari method mulai dari read, create,update, delete dan search.
package barang;
import javax.swing.JTable;
/**
*
* @author codetr
*/
public interface BarangInterface {
public void read(JTable jt);
public void create(Barang b);
public void update(Barang b);
public void delete(int id);
public void search(JTable jt, String nama);
}
Barang Implements
Buat class Implement dengan nama BarangImp
, Anda bisa implementasi dari BarangInterface
package barang;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import koneksi.Koneksi;
/**
*
* @author codetr
*/
public class BarangImp implements BarangInterface {
private Koneksi kon = new Koneksi();
private String[] kolom = {"ID", "NAMA", "HARGA", "STOK", "DESKRIPSI"};
private PreparedStatement ps;
@Override
public void read(JTable jt) {
try {
DefaultTableModel dtm = new DefaultTableModel(null, kolom);
Statement s = kon.getCon().createStatement();
ResultSet rs = s.executeQuery("SELECT * FROM tbl_barang");
while (rs.next()) {
Object[] os = new Object[5];
os[0] = rs.getInt("id");
os[1] = rs.getString("nama");
os[2] = rs.getInt("harga");
os[3] = rs.getInt("stok");
os[4] = rs.getString("deskripsi");
dtm.addRow(os);
}
jt.setModel(dtm);
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, ex.getMessage());
}
}
@Override
public void create(Barang b) {
try {
ps = kon.getCon().prepareStatement("INSERT INTO tbl_barang (nama, deskripsi, harga, stok) VALUES (?,?,?,?)");
ps.setString(1, b.getNama());
ps.setString(2, b.getDeskripsi());
ps.setInt(3, b.getHarga());
ps.setInt(4, b.getStok());
ps.executeUpdate();
JOptionPane.showMessageDialog(null, "Berhasil disimpan");
} catch (SQLException ex) {
Logger.getLogger(BarangImp.class.getName()).log(Level.SEVERE, null, ex);
}
}
@Override
public void update(Barang b) {
try {
ps = kon.getCon().prepareStatement("UPDATE tbl_barang SET nama=?, deskripsi=?, harga=?, stok=? WHERE id=?");
ps.setString(1, b.getNama());
ps.setString(2, b.getDeskripsi());
ps.setInt(3, b.getHarga());
ps.setInt(4, b.getStok());
ps.setInt(5, b.getId());
ps.executeUpdate();
JOptionPane.showMessageDialog(null, "Berhasil diubah");
} catch (SQLException ex) {
Logger.getLogger(BarangImp.class.getName()).log(Level.SEVERE, null, ex);
}
}
@Override
public void delete(int id) {
try {
ps = kon.getCon().prepareStatement("DELETE FROM tbl_barang WHERE id=?");
ps.setInt(1, id);
ps.executeUpdate();
JOptionPane.showMessageDialog(null, "Berhasil dihapus");
} catch (SQLException ex) {
Logger.getLogger(BarangImp.class.getName()).log(Level.SEVERE, null, ex);
}
}
@Override
public void search(JTable jt, String nama) {
try {
DefaultTableModel dtm = new DefaultTableModel(null, kolom);
Statement s = kon.getCon().createStatement();
ResultSet rs = s.executeQuery("SELECT * FROM tbl_barang WHERE nama LIKE '%" + nama + "%'");
while (rs.next()) {
Object[] os = new Object[5];
os[0] = rs.getInt("id");
os[1] = rs.getString("nama");
os[2] = rs.getInt("harga");
os[3] = rs.getInt("stok");
os[4] = rs.getString("deskripsi");
dtm.addRow(os);
}
jt.setModel(dtm);
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, ex.getMessage());
}
}
}
Project dari yang dijelaskan, anda bisa download di link berikut
Github
Contoh Project Lengkap Penjualan Jam dengan databases, anda bisa pelajari untuk konsep arsitekturnya sama dengan yang dijelaskan.
Aplikasi Penjualan Jam
Demikian yang dapat saya sampaikan dari artikel ini semoga bermanfaat, jika ada yang ditanyakan silahkan di kolom komentar dibawah, selamat mencoba.