Tentu, ini artikel tentang Tutorial Java #13: CRUD (Create, Read, Update, Delete) Java.
Setelah Anda memahami cara menghubungkan Java dengan database menggunakan JDBC, langkah selanjutnya adalah menguasai operasi dasar yang paling sering dilakukan pada data: CRUD (Create, Read, Update, Delete). CRUD adalah singkatan yang merangkum empat fungsi fundamental dalam manajemen data. Memahami cara melakukan operasi ini adalah keterampilan inti bagi setiap pengembang Java yang bekerja dengan database.
Dalam tutorial ini, kita akan memperluas contoh dari tutorial sebelumnya (mahasiswa) untuk mendemonstrasikan setiap operasi CRUD secara terperinci.
Persiapan
Pastikan Anda telah memiliki prasyarat dari tutorial sebelumnya:
- Database
kampusdengan tabelmahasiswa. - Driver JDBC (misalnya, MySQL Connector/J) yang sudah ditambahkan ke proyek Anda.
- Konfigurasi koneksi database yang benar (URL, username, password).
1. Operasi CREATE (Menambahkan Data)
Operasi CREATE atau “membuat” data dilakukan dengan menggunakan perintah SQL INSERT. Ini memungkinkan Anda untuk menambahkan baris baru ke dalam tabel.
// Fungsi untuk menambahkan data mahasiswa baru
public void tambahMahasiswa(Connection conn, String nama, String nim, String jurusan) throws SQLException {
String sql = "INSERT INTO mahasiswa (nama, nim, jurusan) VALUES (?, ?, ?)";
try (PreparedStatement pstmt = conn.prepareStatement(sql)) {
pstmt.setString(1, nama);
pstmt.setString(2, nim);
pstmt.setString(3, jurusan);
int affectedRows = pstmt.executeUpdate();
System.out.println(affectedRows + " baris berhasil ditambahkan.");
}
}
Catatan: Kami menggunakan PreparedStatement di sini. Ini sangat disarankan karena mencegah serangan SQL Injection dan meningkatkan kinerja. Tanda tanya (?) adalah placeholder yang akan diisi oleh nilai dari metode setString(), setInt(), dll.
2. Operasi READ (Membaca Data)
Operasi READ atau “membaca” data adalah fungsi yang paling umum. Ini dilakukan dengan perintah SQL SELECT untuk mengambil data dari satu atau lebih tabel.
// Fungsi untuk membaca semua data mahasiswa
public void bacaSemuaMahasiswa(Connection conn) throws SQLException {
String sql = "SELECT id, nama, nim, jurusan FROM mahasiswa";
try (Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql)) {
System.out.println("--- Data Mahasiswa ---");
while (rs.next()) {
int id = rs.getInt("id");
String nama = rs.getString("nama");
String nim = rs.getString("nim");
String jurusan = rs.getString("jurusan");
System.out.printf("ID: %d, Nama: %s, NIM: %s, Jurusan: %s%n", id, nama, nim, jurusan);
}
}
}
Metode executeQuery() mengembalikan objek ResultSet yang berisi baris-baris data yang cocok dengan kriteria SELECT.
3. Operasi UPDATE (Memperbarui Data)
Operasi UPDATE atau “memperbarui” data digunakan untuk memodifikasi baris yang sudah ada di dalam tabel. Perintah SQL UPDATE digunakan untuk tujuan ini.
// Fungsi untuk memperbarui data mahasiswa berdasarkan NIM
public void perbaruiMahasiswa(Connection conn, String nim, String namaBaru, String jurusanBaru) throws SQLException {
String sql = "UPDATE mahasiswa SET nama = ?, jurusan = ? WHERE nim = ?";
try (PreparedStatement pstmt = conn.prepareStatement(sql)) {
pstmt.setString(1, namaBaru);
pstmt.setString(2, jurusanBaru);
pstmt.setString(3, nim);
int affectedRows = pstmt.executeUpdate();
System.out.println(affectedRows + " baris berhasil diperbarui.");
}
}
Klausa WHERE sangat penting dalam operasi UPDATE untuk memastikan Anda hanya memperbarui baris yang dimaksud. Jika Anda tidak menggunakan WHERE, semua baris dalam tabel akan diperbarui.
4. Operasi DELETE (Menghapus Data)
Operasi DELETE atau “menghapus” data digunakan untuk menghapus baris dari tabel. Ini dilakukan dengan perintah SQL DELETE.
// Fungsi untuk menghapus data mahasiswa berdasarkan NIM
public void hapusMahasiswa(Connection conn, String nim) throws SQLException {
String sql = "DELETE FROM mahasiswa WHERE nim = ?";
try (PreparedStatement pstmt = conn.prepareStatement(sql)) {
pstmt.setString(1, nim);
int affectedRows = pstmt.executeUpdate();
System.out.println(affectedRows + " baris berhasil dihapus.");
}
}
Sama seperti UPDATE, penggunaan klausa WHERE sangatlah penting untuk menghindari penghapusan seluruh data dalam tabel.
Contoh Penggunaan Lengkap
Berikut adalah contoh program lengkap yang mengintegrasikan semua fungsi CRUD di atas.
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class MainCRUD {
// Konfigurasi Database
static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver";
static final String DB_URL = "jdbc:mysql://localhost:3306/kampus";
static final String USER = "root";
static final String PASS = "password";
public static void main(String[] args) {
try (Connection conn = DriverManager.getConnection(DB_URL, USER, PASS)) {
MainCRUD app = new MainCRUD();
// 1. READ: Tampilkan semua data
app.bacaSemuaMahasiswa(conn);
// 2. CREATE: Tambahkan data baru
System.out.println("\n--- Menambahkan Mahasiswa Baru ---");
app.tambahMahasiswa(conn, "Bambang Prakoso", "1901005", "Teknik Mesin");
// 3. READ: Tampilkan lagi untuk verifikasi
System.out.println("\n--- Data Setelah Penambahan ---");
app.bacaSemuaMahasiswa(conn);
// 4. UPDATE: Perbarui data
System.out.println("\n--- Memperbarui Data Mahasiswa NIM 1901001 ---");
app.perbaruiMahasiswa(conn, "1901001", "Andi Pratama", "Ilmu Komputer");
// 5. READ: Tampilkan lagi untuk verifikasi
System.out.println("\n--- Data Setelah Pembaruan ---");
app.bacaSemuaMahasiswa(conn);
// 6. DELETE: Hapus data
System.out.println("\n--- Menghapus Data Mahasiswa NIM 1901003 ---");
app.hapusMahasiswa(conn, "1901003");
// 7. READ: Tampilkan lagi untuk verifikasi
System.out.println("\n--- Data Setelah Penghapusan ---");
app.bacaSemuaMahasiswa(conn);
} catch (SQLException e) {
e.printStackTrace();
}
}
// ... (letakkan semua fungsi CRUD di sini)
public void tambahMahasiswa(Connection conn, String nama, String nim, String jurusan) throws SQLException {
String sql = "INSERT INTO mahasiswa (nama, nim, jurusan) VALUES (?, ?, ?)";
try (PreparedStatement pstmt = conn.prepareStatement(sql)) {
pstmt.setString(1, nama);
pstmt.setString(2, nim);
pstmt.setString(3, jurusan);
int affectedRows = pstmt.executeUpdate();
System.out.println(affectedRows + " baris berhasil ditambahkan.");
}
}
public void bacaSemuaMahasiswa(Connection conn) throws SQLException {
String sql = "SELECT id, nama, nim, jurusan FROM mahasiswa";
try (Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql)) {
System.out.println("--- Data Mahasiswa ---");
while (rs.next()) {
int id = rs.getInt("id");
String nama = rs.getString("nama");
String nim = rs.getString("nim");
String jurusan = rs.getString("jurusan");
System.out.printf("ID: %d, Nama: %s, NIM: %s, Jurusan: %s%n", id, nama, nim, jurusan);
}
}
}
public void perbaruiMahasiswa(Connection conn, String nim, String namaBaru, String jurusanBaru) throws SQLException {
String sql = "UPDATE mahasiswa SET nama = ?, jurusan = ? WHERE nim = ?";
try (PreparedStatement pstmt = conn.prepareStatement(sql)) {
pstmt.setString(1, namaBaru);
pstmt.setString(2, jurusanBaru);
pstmt.setString(3, nim);
int affectedRows = pstmt.executeUpdate();
System.out.println(affectedRows + " baris berhasil diperbarui.");
}
}
public void hapusMahasiswa(Connection conn, String nim) throws SQLException {
String sql = "DELETE FROM mahasiswa WHERE nim = ?";
try (PreparedStatement pstmt = conn.prepareStatement(sql)) {
pstmt.setString(1, nim);
int affectedRows = pstmt.executeUpdate();
System.out.println(affectedRows + " baris berhasil dihapus.");
}
}
}
Kesimpulan
Menguasai operasi CRUD adalah pondasi untuk membangun aplikasi berbasis data. Dengan menggunakan JDBC di Java, Anda dapat berinteraksi dengan database secara efisien dan aman. Meskipun contoh ini menggunakan Statement dan PreparedStatement dasar, untuk aplikasi produksi, penggunaan PreparedStatement adalah praktik terbaik karena menawarkan keamanan yang lebih baik dan performa yang optimal.