Bismillah...
Pada pembahasan sebelumnya saya sudah membahas tentang bagaimana cara membuat fungsi CRUD (Create, Read, Update and Delete) pada bahasa pemrograman java dengan menggunakan
Statement. Jika anda belum membacanya silahkan buka materinya disini
Membuat CRUD dengan Statement dan ResultSet Java.
Nah, melanjutkan tulisan tersebut saya akan kembali memberikan tutorial tentang pembuatan fungsi CRUD tetapi dengan menggunakan interface
PreparedStatement.
Terdapat beberapa keuntungan jika kita menggunakan interface
PreparedStatement dibandingkan dengan
Statement, diantaranya adalah sebeagai berikut.
- Lebih mudah digunakan dibandingkan dengan Statement pada saat memberikan sebuah nilai pada field tertentu dengan hanya menambahkan tanda tanya (?) pada setiap parameter yang ada.
- Query yang dijalankan lebih aman (anti Sql Injection).
- Mempercepat proses eksekusi karena Instance dari PreparedStatement mengandung perintah SQL yang sudah terkompilasi.
Setelah mengetahui kelebihan dari penggunaan interface
PreparedStatement ini, selanjutnya kita akan mempraktekkan cara penggunaannya pada proses CRUD.
Pertama buat kelas
KoneksiDB.java terlebih dahulu seperti berikut ini.
package az.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class KoneksiDB {
public static String USERNAME = "root";// username yang digunakan untuk mengakses database tersebut
public static String PASSWORD = "";// password yang digunakan untuk mengakses database tersebut. Jika tidak menggunakan password, kosongkan saja bagian tersebut
public static int PORT = 3306;//port mysql
public static String DATABASE = "akademik";// database yang akan dikoneksikan
public static String IP_ADDRESS = "localhost";// ip address server MySQL. Jika dengan koneksi LAN atau internet ganti dengan nomor ip komputer server tempat dimana menginstal MySQL Server
public static final Connection connect(){
Connection con=null; // inisialisasi interface Connection
try{
Class.forName("com.mysql.jdbc.Driver");// load driver
con=DriverManager.getConnection("jdbc:mysql://"+IP_ADDRESS+":"+PORT+"/"+DATABASE,
USERNAME, PASSWORD);// menghubungkan database dengan method getConnection menggunakan atribut yang telah di definisikan diatas
}
catch(ClassNotFoundException | SQLException e){
System.out.println("Koneksi Gagal !\n"+e.getMessage());
}
return con;
}
}
Kemudian buat sebuah kelas entitas mahasiswa dengan nama
Mahasiswa.java dan simpan pada package yang sama dengan kelas
KoneksiDB.java diatas.
package az.jdbc;
enum Gender{L,P};
public class Mahasiswa {
private String nim;
private String nama;
private Gender gender;
private String tempat_lahir;
private java.sql.Date tgl_lahir;
public String getNim() {
return nim;
}
public void setNim(String nim) {
this.nim = nim;
}
public String getNama() {
return nama;
}
public void setNama(String nama) {
this.nama = nama;
}
public Gender getGender() {
return gender;
}
public void setGender(Gender gender) {
this.gender = gender;
}
public String getTempat_lahir() {
return tempat_lahir;
}
public void setTempat_lahir(String tempat_lahir) {
this.tempat_lahir = tempat_lahir;
}
public java.sql.Date getTgl_lahir() {
return tgl_lahir;
}
public void setTgl_lahir(java.sql.Date tgl_lahir) {
this.tgl_lahir = tgl_lahir;
}
}
Jika sudah, sekarang kita langsung saja membuat contoh dari pembuatan CRUD menggunakan
PreparedStatement seperti berikut ini.
Buat sebuah kelas dengan nama
BelajarCrud2.java misalnya pada
project anda, dan tambahkan beberapa baris kode seperti berikut ini.
package az.jdbc;
import java.sql.ResultSet; // interface ResultSet yang digunakan untuk menampilkan record data/table
import java.sql.SQLException;// kelas Exception untuk penanganan kesalahan pada query yang dimasukkan
import java.sql.PreparedStatement;// interface yang kita gunakan untuk mengeksekusi query sebagai pengganti dari interface Statement
import java.util.ArrayList;// Array list yang digunakan untuk menampung seluruh data mahasiswa
import java.util.List;//interface dari kelas Collection yang selanjutnya akan digunakan bersama kelas ArrayList
public class BelajarCrud {
}
Kemudian kita akan membuat method-method yang diperlukan pada proses CRUD.
- Method Create (Insert data)
public void insert(Mahasiswa mhs) throws SQLException{
String query = "insert into tb_mahasiswa values(?,?,?,?,?)";
PreparedStatement pr = KoneksiDB.connect().prepareStatement(query);
pr.setString(1, mhs.getNim());
pr.setString(2, mhs.getNama());
pr.setString(3, mhs.getGender().toString());
pr.setString(4, mhs.getTempat_lahir());
pr.setDate(5, mhs.getTgl_lahir());
pr.executeUpdate();
pr.close();
}
Method diatas digunakan untuk proses penambahan data ke tabel “tb_mahasiswa”. Pada variabel query terlihat bahwa seluruh parameter tidak diisi langsung pada query tersebut, melainkan diikat oleh inteface PreparedStatement.
- Method Read (Select data)
Method ini merupakan method yang digunakan untuk menampilkan data. Sama pada tutorial sebelumnya, untuk menampilkan data saya membuat dua buah method. Method pertama digunakan untuk menampilkan hanya 1 buah baris data, kemudian method yang kedua digunakan untuk menampilkan keseluruhan data.
- Method dengan 1 buah baris data
public Mahasiswa readOne(String nim) throws SQLException{
Mahasiswa mhs = null;
String query = "select * from tb_mahasiswa where nim = ?";
PreparedStatement pr = KoneksiDB.connect().prepareStatement(query);
pr.setString(1, nim);
ResultSet rs = pr.executeQuery();
if(rs.next()){
mhs = new Mahasiswa();
mhs.setNim(rs.getString("nim"));
mhs.setNama(rs.getString("nama"));
mhs.setGender(rs.getString("gender").equals("L")?Gender.L:Gender.P);
mhs.setTempat_lahir(rs.getString("tempat_lahir"));
mhs.setTgl_lahir(rs.getDate("tgl_lahir"));
}
pr.close();
rs.close();
return mhs;
}
- Method dengan seluruh baris data
public List readAll() throws SQLException{
List list = new ArrayList<>();
Mahasiswa mhs;
String query = "select * from tb_mahasiswa order by nim";
PreparedStatement pr = KoneksiDB.connect().prepareStatement(query);
ResultSet rs = pr.executeQuery();
while(rs.next()){
mhs = new Mahasiswa();
mhs.setNim(rs.getString("nim"));
mhs.setNama(rs.getString("nama"));
mhs.setGender(rs.getString("gender").equals("L")?Gender.L:Gender.P);
mhs.setTempat_lahir(rs.getString("tempat_lahir"));
mhs.setTgl_lahir(rs.getDate("tgl_lahir"));
list.add(mhs);
}
pr.close();
rs.close();
return list;
}
- Method Update
Method ini digunakan untuk melakukan proses perubahan data pada sebuah tabel. Isi dari method update ini adalah sebagai berikut.
public void update(Mahasiswa mhs, String nim_old) throws SQLException{
String query = "update tb_mahasiswa set nim = ?, nama = ?, gender = ?, tempat_lahir = ?, "
+ "tgl_lahir = ? where nim = ?";
PreparedStatement pr = KoneksiDB.connect().prepareStatement(query);
pr.setString(1, mhs.getNim());
pr.setString(2, mhs.getNama());
pr.setString(3, mhs.getGender().toString());
pr.setString(4, mhs.getTempat_lahir());
pr.setDate(5, mhs.getTgl_lahir());
pr.setString(6, nim_old);
pr.executeUpdate();
pr.close();
}
- Method Delete
Method delete digunakan untuk menghapus baris data yang terdapat pada tabel. Isi dari method delete ini adalah seperti berikut.
public void delete(String nim) throws SQLException{
String query = "delete from tb_mahasiswa where nim = ?";
PreparedStatement pr = KoneksiDB.connect().prepareStatement(query);
pr.setString(1, nim);
pr.executeUpdate();
pr.close();
}
Berikut adalah keseluruhan isi kode yang dibuat untuk proses CRUD menggunakan interface
PreparedStatement.
package az.jdbc;
import java.sql.ResultSet; // interface ResultSet yang digunakan untuk menampilkan record data/table
import java.sql.SQLException;// kelas Exception untuk penanganan kesalahan pada query yang dimasukkan
import java.sql.PreparedStatement;// interface yang kita gunakan untuk mengeksekusi query sebagai pengganti interface Statement
import java.util.ArrayList;// Array list yang digunakan untuk menampung seluruh data mahasiswa
import java.util.List;//interface dari kelas Collection yang selanjutnya akan digunakan bersama kelas ArrayList
public class BelajarCrud2 {
public void insert(Mahasiswa mhs) throws SQLException{
String query = "insert into tb_mahasiswa values(?,?,?,?,?)";
PreparedStatement pr = KoneksiDB.connect().prepareStatement(query);
pr.setString(1, mhs.getNim());
pr.setString(2, mhs.getNama());
pr.setString(3, mhs.getGender().toString());
pr.setString(4, mhs.getTempat_lahir());
pr.setDate(5, mhs.getTgl_lahir());
pr.executeUpdate();
pr.close();
}
public Mahasiswa readOne(String nim) throws SQLException{
Mahasiswa mhs = null;
String query = "select * from tb_mahasiswa where nim = ?";
PreparedStatement pr = KoneksiDB.connect().prepareStatement(query);
pr.setString(1, nim);
ResultSet rs = pr.executeQuery();
if(rs.next()){
mhs = new Mahasiswa();
mhs.setNim(rs.getString("nim"));
mhs.setNama(rs.getString("nama"));
mhs.setGender(rs.getString("gender").equals("L")?Gender.L:Gender.P);
mhs.setTempat_lahir(rs.getString("tempat_lahir"));
mhs.setTgl_lahir(rs.getDate("tgl_lahir"));
}
pr.close();
rs.close();
return mhs;
}
public List readAll() throws SQLException{
List list = new ArrayList<>();
Mahasiswa mhs;
String query = "select * from tb_mahasiswa order by nim";
PreparedStatement pr = KoneksiDB.connect().prepareStatement(query);
ResultSet rs = pr.executeQuery();
while(rs.next()){
mhs = new Mahasiswa();
mhs.setNim(rs.getString("nim"));
mhs.setNama(rs.getString("nama"));
mhs.setGender(rs.getString("gender").equals("L")?Gender.L:Gender.P);
mhs.setTempat_lahir(rs.getString("tempat_lahir"));
mhs.setTgl_lahir(rs.getDate("tgl_lahir"));
list.add(mhs);
}
pr.close();
rs.close();
return list;
}
public void update(Mahasiswa mhs, String nim_old) throws SQLException{
String query = "update tb_mahasiswa set nim = ?, nama = ?, gender = ?, tempat_lahir = ?, "
+ "tgl_lahir = ? where nim = ?";
PreparedStatement pr = KoneksiDB.connect().prepareStatement(query);
pr.setString(1, mhs.getNim());
pr.setString(2, mhs.getNama());
pr.setString(3, mhs.getGender().toString());
pr.setString(4, mhs.getTempat_lahir());
pr.setDate(5, mhs.getTgl_lahir());
pr.setString(6, nim_old);
pr.executeUpdate();
pr.close();
}
public void delete(String nim) throws SQLException{
String query = "delete from tb_mahasiswa where nim = ?";
PreparedStatement pr = KoneksiDB.connect().prepareStatement(query);
pr.setString(1, nim);
pr.executeUpdate();
pr.close();
}
}
Untuk mencoba kode yang kita telah dibuat diatas, buat sebuah kelas TestCrud2.java seperti berikut ini.
package az.jdbc;
import java.sql.SQLException;
import java.util.Calendar;
import java.util.List;
public class TestCrud2 {
public static void main(String[]args){
BelajarCrud2 crud = new BelajarCrud2();
// insert data
Mahasiswa mhs = new Mahasiswa();
mhs.setNim("11015513");
mhs.setNama("Farhana");
mhs.setGender(Gender.P);
mhs.setTempat_lahir("Daik Lingga");
Calendar cal = Calendar.getInstance();
cal.set(1994, 7, 18);
mhs.setTgl_lahir(new java.sql.Date(cal.getTime().getTime()));
System.out.println("melakukan proses penambahan data...");
try {
crud.insert(mhs);// memanggil method insert()
System.out.println("proses penambahan data berhasil dilakukan !");
} catch (SQLException ex) {
System.out.println("gagal melakukan proses penambahan data\n"+ex.getMessage());
}
try {
Mahasiswa mhs_one = crud.readOne("11015510");// memanggil method readOne()
System.out.println("menampilkan mahasiswa dengan method readOne()");
System.out.println("Nim\t\t: "+mhs_one.getNim());
System.out.println("Nama\t\t: "+mhs_one.getNama());
System.out.println("Gender\t\t: "+mhs_one.getGender());
System.out.println("Tempat Lahir\t: "+mhs_one.getTempat_lahir());
System.out.println("Tanggal Lahir\t: "+mhs_one.getTgl_lahir());
} catch (SQLException ex) {
System.out.println("gagal menampilkan data dengan method readOne() !\n"+ex.getMessage());
}
System.out.println("\n=====================================================");
System.out.println("menampilkan mahasiswa dengan method readAll()");
try {
List mhs_all = crud.readAll();// memanggil method readAll()
for(Mahasiswa mhs_n:mhs_all){
System.out.println("Nim\t\t: "+mhs_n.getNim());
System.out.println("Nama\t\t: "+mhs_n.getNama());
System.out.println("Gender\t\t: "+mhs_n.getGender());
System.out.println("Tempat Lahir\t: "+mhs_n.getTempat_lahir());
System.out.println("Tanggal Lahir\t: "+mhs_n.getTgl_lahir());
System.out.println("-----------------------------------------------");
}
} catch (SQLException ex) {
System.out.println("gagal menampilkan data dengan method readAll() !\n"+ex.getMessage());
}
System.out.println("\n=====================================================");
System.out.println("melakukan proses perubahan data...");
//proses update/perubahan data mahasiswa
try {
Mahasiswa mhs_update = crud.readOne("11015513");// memanggil method readOne(); terlebih dahulu sebelum melakukan perubahan data agar data yang tak perlu diubah tidak ikut berubah pada saat query dijalankan
mhs_update.setNim("11015514");// nim baru
mhs_update.setNama("Farhana");// nama baru
mhs_update.setTempat_lahir("Tanjungpinang"); // tempat lahir baru
cal.set(1994, 7, 20);// tanggal lahir baru
mhs_update.setTgl_lahir(new java.sql.Date(cal.getTime().getTime()));
crud.update(mhs_update, "11015513");// memanggil method update();
System.out.println("proses perubahan data berhasil dilakukan !\nberikut adalah data mahasiswa yang baru diubah");
Mahasiswa mhs_one = crud.readOne("11015514");//nim baru
System.out.println("Nim\t\t: "+mhs_one.getNim());
System.out.println("Nama\t\t: "+mhs_one.getNama());
System.out.println("Gender\t\t: "+mhs_one.getGender());
System.out.println("Tempat Lahir\t: "+mhs_one.getTempat_lahir());
System.out.println("Tanggal Lahir\t: "+mhs_one.getTgl_lahir());
} catch (SQLException ex) {
System.out.println("gagal melakukan proses penambahan data\n"+ex.getMessage());
}
System.out.println("\n=====================================================");
System.out.println("melakukan proses penghapusan data...");
try {
crud.delete("11015514");// memanggil method delete();
System.out.println("proses penghapusan data berhasil dilakukan !\nberikut daftar seluruh data mahasiswa yang ada");
List mhs_all = crud.readAll();
for(Mahasiswa mhs_n:mhs_all){
System.out.println("Nim\t\t: "+mhs_n.getNim());
System.out.println("Nama\t\t: "+mhs_n.getNama());
System.out.println("Gender\t\t: "+mhs_n.getGender());
System.out.println("Tempat Lahir\t: "+mhs_n.getTempat_lahir());
System.out.println("Tanggal Lahir\t: "+mhs_n.getTgl_lahir());
System.out.println("-----------------------------------------------");
}
} catch (SQLException ex) {
System.out.println("gagal melakukan proses penghapusan data\n"+ex.getMessage());
}
}
}
Demikianlah tutorial
Membuat CRUD dengan PreparedStatement Java. Semoga bisa membantu anda untuk memahami proses CRUD pada bahasa pemrograman java menggunakan interface
PreparedStatement.
Untuk terus meng-
update artikel yang kami posting dari website ini anda bisa mengisi email melalui isian
Follow by Email dibawah.
Terima kasih... wassalam