Implementasi aplikasi yang menghubungkan Java dengan database MySQL menggunakan JDBC. Class JavaCRUD mengelola koneksi database dan menyediakan menu interaktif bagi user untuk melakukan operasi CRUD (Create, Read, Update, Delete). Metode insertBuku, showData, updateBuku, dan deleteBuku masing-masing mengeksekusi query SQL (INSERT, SELECT, UPDATE, DELETE) melalui objek Statement, sementara BufferedReader digunakan untuk menangani input data dari user secara dinamis.
CREATE DATABASE perpustakaan;
USE perpustakaan;
CREATE TABLE buku (
id_buku INT NOT NULL AUTO_INCREMENT,
judul VARCHAR(45) NOT NULL,
pengarang VARCHAR(45) NOT NULL,
PRIMARY KEY (id_buku)
);
INSERT INTO buku (judul, pengarang) VALUES
('Belajar Pemrograman Java dari Nol', 'Petani Kode'),
('Pemrograman Java Menggunakan Linux', 'Petani Kode');
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class JavaCRUD {
static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver";
static final String DB_URL = "jdbc:mysql://localhost/perpustakaan";
static final String USER = "root";
static final String PASS = "";
static Connection conn;
static Statement stmt;
static ResultSet rs;
static InputStreamReader inputStreamReader = new InputStreamReader(System.in);
static BufferedReader input = new BufferedReader(inputStreamReader);
public static void main(String[] args) {
try {
Class.forName(JDBC_DRIVER);
conn = DriverManager.getConnection(DB_URL, USER, PASS);
stmt = conn.createStatement();
while (!conn.isClosed()) {
showMenu();
}
stmt.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
static void showMenu() {
System.out.println("\n========= MENU UTAMA =========");
System.out.println("1. Insert Data");
System.out.println("2. Show Data");
System.out.println("3. Edit Data");
System.out.println("4. Delete Data");
System.out.println("0. Keluar");
System.out.println("");
System.out.print("PILIHAN> ");
try {
int pilihan = Integer.parseInt(input.readLine());
switch (pilihan) {
case 0:
System.exit(0);
break;
case 1:
insertBuku();
break;
case 2:
showData();
break;
case 3:
updateBuku();
break;
case 4:
deleteBuku();
break;
default:
System.out.println("Pilihan salah!");
}
} catch (Exception e) {
e.printStackTrace();
}
}
static void showData() {
String sql = "SELECT * FROM buku";
try {
rs = stmt.executeQuery(sql);
System.out.println("+--------------------------------+");
System.out.println("| DATA BUKU DI PERPUSTAKAAN |");
System.out.println("+--------------------------------+");
while (rs.next()) {
int idBuku = rs.getInt("id_buku");
String judul = rs.getString("judul");
String pengarang = rs.getString("pengarang");
System.out.println(String.format("%d. %s -- (%s)", idBuku, judul, pengarang));
}
} catch (Exception e) {
e.printStackTrace();
}
}
static void insertBuku() {
try {
System.out.print("Judul: ");
String judul = input.readLine().trim();
System.out.print("Pengarang: ");
String pengarang = input.readLine().trim();
String sql = "INSERT INTO buku (judul, pengarang) VALUES('%s', '%s')";
sql = String.format(sql, judul, pengarang);
stmt.execute(sql);
System.out.println("Berhasil menyimpan data...");
} catch (Exception e) {
e.printStackTrace();
}
}
static void updateBuku() {
try {
System.out.print("ID yang mau diedit: ");
int idBuku = Integer.parseInt(input.readLine());
System.out.print("Judul: ");
String judul = input.readLine().trim();
System.out.print("Pengarang: ");
String pengarang = input.readLine().trim();
String sql = "UPDATE buku SET judul='%s', pengarang='%s' WHERE id_buku=%d";
sql = String.format(sql, judul, pengarang, idBuku);
stmt.execute(sql);
System.out.println("Berhasil mengedit data...");
} catch (Exception e) {
e.printStackTrace();
}
}
static void deleteBuku() {
try {
System.out.print("ID yang mau dihapus: ");
int idBuku = Integer.parseInt(input.readLine());
String sql = String.format("DELETE FROM buku WHERE id_buku=%d", idBuku);
stmt.execute(sql);
System.out.println("Data telah terhapus...");
} catch (Exception e) {
e.printStackTrace();
}
}
}