Langsung ke konten utama

Tutorial Java dan MySQL: Membuat Program CRUD Berbasis Teks

Tutorial Java dan MySQL: Membuat Program CRUD Berbasis Teks


  
Tutorial Java dan MySQL: Membuat Program CRUD
Program Java yang sering kita buat, biasanya akan menyimpan data dalam memori (RAM).
Setelah program ditutup, semuanya akan hilang. Karena sifatnya temporer.
Agar data yang diinputkan dapat disimpan secara ‘permanen’, kita membutuhkan database.
Ada banyak sekali pilihan database yang bisa digunakan, diantaranya: MySQLSQLite, PostgreSQL, Ms. SQL Server, Oracle, MongoDB, dan sebagainya.
Pada kesempatan ini, kita akan belajar cara menghubungkan Java dengan MySQL dan membuat sebuah program CRUD sederhana berbasis teks.

Bagaimana Cara Menghubungkan Java dengan MySQL?

Kita membutuhkan JDBC (Java Data Base Connectivity) untuk menghubungkan Java dan MySQL.
JDBC bertugas menyediakan koneksi ke database, sehingga kita bisa mengakses dan mengelola datanya dari program Java.
Ada beberapa istilah yang harus dipahami dalam JDBC:
  • DriverManager: adalah sebuah class yang mengelola dirver;
  • Driver: adalah interface yang menangani komunikasi dengan database.
  • Connection: adalah interface yang menyediakan method untuk menghubungi database;
  • Statement: adalah inteface untuk mengeksekusi query;
  • ResultSet: adalah interface untuk menampung data hasil query.
Langkah-langkah menghubungkan Java dengan MySQL:
  1. Impor package java.sql.*;
  2. Daftarkan driver atau pilih driver yang akan digunakan;
  3. Buat Sebuah Koneksi;
  4. Exsekusi sebuah Query;
  5. Tutup koneksi dan selesai.
Untuk lebih jelasnya, mari kita coba saja dalam program.

Program Java dan MySQL

Silahkan buat proyek Java Application di Netbeans.
Membuat Proyek Java
Berikan nama: belajar-java-mysql.
Membuat Proyek Java
Sebelum mulai coding, siapkan dulu databasenya.
Silahkan buat database baru bernama perpustakaan.
Membuat database
Setelah itu buat tabel bernama buku.
Membuat tabel buku
Kode SQL-nya:
CREATE TABLE buku ( 
    id_buku INT NOT NULL AUTO_INCREMENT , 
    judul VARCHAR(45) NOT NULL , 
    pengarang VARCHAR(45) NOT NULL , 
    PRIMARY KEY (id_buku)
);
Setelah itu coba isi dengan beberapa data.
INSERT INTO buku (judul, pengarang) 
VALUES 
    ('Belajar Pemrograman Java dari Nol', 'Petani Kode'), 
    ('Pemrograman Java Menggunakan Linux', 'Petani Kode')
Selanjutnya kita akan mencoba menghubugkan program yang sudah kita buat dengan database ini.
Silahkan ikuti kode berikut:
package belajar.java.mysql;

// import bumbu-bumbu yang diperlukan
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.Statement;
import java.sql.ResultSet;

// bisa juga diimpor sekaligus seperti ini:
// import java.sql.*


public class BelajarJavaMysql {
    
    // Menyiapkan paramter JDBC untuk koneksi ke datbase
    static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
    static final String DB_URL = "jdbc:mysql://localhost/perpustakaan";
    static final String USER = "root";
    static final String PASS = "kopi";

    // Menyiapkan objek yang diperlukan untuk mengelola database
    static Connection conn;
    static Statement stmt;
    static ResultSet rs;

    public static void main(String[] args) {
        
        // Melakukan koneksi ke database
        // harus dibungkus dalam blok try/catch
        try {
            // register driver yang akan dipakai
            Class.forName(JDBC_DRIVER);
            
            // buat koneksi ke database
            conn = DriverManager.getConnection(DB_URL, USER, PASS);
            
            // buat objek statement
            stmt = conn.createStatement();
            
            // buat query ke database
            String sql = "SELECT * FROM buku";
            
            // eksekusi query dan simpan hasilnya di obj ResultSet
            rs = stmt.executeQuery(sql);
            
            // tampilkan hasil query
            while(rs.next()){
                System.out.println("ID Buku: " + rs.getInt("id_buku"));
                System.out.println("Judul: " + rs.getString("judul"));
                System.out.println("Pengarang: " + rs.getString("pengarang"));
            }
            
            stmt.close();
            conn.close();
            
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
    
}
Setelah itu…
Programnya belum dapat dieksekusi, karena library MySQL JDBC Driver belum kita tambahkan ke dalam proyek.
Kalau kamu nekat mengeksekusi, maka akan mendapatkan error ClassNotFoundException: com.mysql.jdbc.Driver.
ClassNotFoundException: com.mysql.jdbc.Driver
Bagaimana cara menambahkannya?
Klik kanan pada Libraries, lalu pilih Add Library dan MySQL JDBC Driver:
Menambahkan Library di Proyek Java Netbeans
Setelah itu, baru bisa di-run atau dieksekusi.
Tekan Shift+F6 atau klik kanan–>Run File.
Menjalankan Program Java dan MySQL
Selamat 🎉
Kita telah berhasil menghubungkan program Java dengan database MySQL dan menampilkan datanya.
Tunggu dulu… Jelasin kodenya lebih detail om!
Baik, saya akan jelaskan.
Pertam dimulai dari mengimpor:
// import bumbu-bumbu yang diperlukan
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.Statement;
import java.sql.ResultSet;
Kode di atas maksudnya adalah mengimpor class dan interface yang kita butuhkan.
Bisa juga disingkat seperti ini:
import java.sql.*;
Setelah kita mengimpor, selanjutnya kita siapkan dulu sebuah konstanta untuk parameter yang akan digunakan saat membuat koneksi ke database.
// Menyiapkan paramter JDBC untuk koneksi ke datbase
static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
static final String DB_URL = "jdbc:mysql://localhost/perpustakaan";
static final String USER = "root";
static final String PASS = "kopi";
DB_URL menyatakan URL server database dan database yang akan digunakan. Lalu USER untuk username databasenya dan PASS untuk password.
Di komputer saya, password MySQL-nya adalah kopi, hooo~ ketahuan deh 🐒.
Jika tidak pakai password, kosongkan saja nilai PASS.
static final String PASS = "";
Sebelum mulai membuat koneksi ke server, kita harus tentukan dulu driver yang akan digunakan.
// register driver yang akan digunakan
Class.forName(JDBC_DRIVER);
Dalam contoh tersebut, kita menggunakan driver "com.mysql.jdbc.Driver" untuk database MySQL.
Sedangkan untuk database yang lain, beda lagi drivernya.
  • MySQL
    Driver: com.mysql.jdbc.Driver,
    URL: jdbc:mysql://hostname/databaseName;
  • ORACLE
    Driver: oracle.jdbc.driver.OracleDriver,
    URL jdbc:oracle:thin:@hostname:portNumber:databaseName;
  • DB2
    Driver: COM.ibm.db2.jdbc.net.DB2Driver,
    URL: jdbc:db2:hostname:portNumber/databaseName
  • Sybase
    Driver: com.sybase.jdbc.SybDriver,
    URL: jdbc:sybase:Tds:hostname:portNumber/databaseName
Setelah memilih driver, selanjutnya kita lakukan koneksi ke database dengan parameter yang sudah dibuat.
// buat koneksi ke database
conn = DriverManager.getConnection(DB_URL, USER, PASS);
Kalau koneksinya gagal, biasanya akan terjadi SQLException.
Selanjutnya kita membutuhkan objek Statement untuk mengeksekusi Query MySQL.
// buat objek statement
stmt = conn.createStatement();
Setelah itu, buat sebuah Query, eksekusi, dan hasilnya akan disimpan ke dalam objek rs (ResultSet).
// buat query ke database
String sql = "SELECT * FROM buku";
            
// eksekusi query dan simpan hasilnya di obj ResultSet
rs = stmt.executeQuery(sql);
Method executeQuery() akan menghasilkan nilai kembalian berupa objek ResultSet. Method ini biasanya digunakan untuk mengambil data dari database.
Selain itu ada juga method untuk eksekusi query simpan, update, batch, dsb.
Tips: Tekan tobol Ctrl+Spasi saat menulis kode untuk melihatnya.
Method untuk eksekusi Query
Setelah mendapatkan data dari database MySQL, selanjutnya kita bisa tampilkan dengan perulangan.
// tampilkan hasil query
while(rs.next()){
    System.out.println("ID Buku: " + rs.getInt("id_buku"));
    System.out.println("Judul: " + rs.getString("judul"));
    System.out.println("Pengarang: " + rs.getString("pengarang"));
}
Perulangan tersebut akan mengulang sebanyak isi tabelnya, atau dengan kata lain “Ulangi selama rs masih punya isi”.
Cara mengambil nilai dari objek rs menggunakan method get* dengan parameter nama kolom di tabel database.
Contoh mau ambil id buku yang bertipe Integer:
int idBuku = rs.getInt("id_buku");
Kalau mau ambil dengan tipe String bagaimana?
Ya tinggal diganti method-nya:
String idBuku = rs.getString("id_buku");
Pastikan paramternya sama persis dengan nama kolom di database. Jika di database pakai huruf kapital, ya ikuti pakai huruf kapital.
Mengambil data dari ResultSet
Terakhir menutup Statement dan koneksi, biar aman 😄.
stmt.close();
conn.close();
Gampang kan?
Selanjutnya kita akan membuat program yang lebih lengkap.

Membuat Program CRUD Java dan MySQL

Program CRUD adalah program yang mampu melakukan operasi CreateReadUpdate, dan Delete.
Program dasar untuk memahami pemrograman database.
Silahkan buat Class baru di dalam proyek yang tadi dengan nama JavaCRUD.
Kita akan isi Class tersebut dengan fungsi-fungsi atau method untuk melakukan CRUD.
Mari kita mulai dari mengimpor bumbu-bumbu yang dibutuhkan:
import java.io.BufferedReader;
import java.io.InputStreamReader;

import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.Statement;
import java.sql.ResultSet;
Class BuffereReader dan InputStreamReader kita butuhkan untuk mengambil input dari keyboard.
Seteleh itu, kita siapkan parameter, variabel, dan objek yang dibutuhkan.
static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
static final String DB_URL = "jdbc:mysql://localhost/perpustakaan";
static final String USER = "root";
static final String PASS = "kopi";

static Connection conn;
static Statement stmt;
static ResultSet rs;

static InputStreamReader inputStreamReader = new InputStreamReader(System.in);
static BufferedReader input = new BufferedReader(inputStreamReader);
Selanjutnya membuat method main() yang merupakan entri point dari sebuah program.
Di dalam method ini kita akan melakukan perulangan selama terkoneksi dengan database dan perulangannya akan berhenti setelah user memilih menu keluar.
public static void main(String[] args) {

    try {
        // register driver
        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();
    }

}
Perhatikan, di sana ada pemanggilan fungsi atau method showMenu().
Berarti kita harus membuatnya:
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();
    }
}
Di dalam method tersebut, kita menggunakan logika percabangan switch/case untuk pemilihan menu.
Perhatikan lagi, di sana ada pemanggilan method insertBuku()showData()updateBuku(), dan deleteBuku() di masing-masing pilihan menu.
Tugas kita selanjutnya adalah membuat keempat method tersebut.
Mari kita mulai dari method showData():
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();
    }
}
Method show data hanya berfungsi untuk menampilkan data hasil dari database.
Kita menggunakan fungsi String.format() untuk memudahkan penggabungan string. Kalau belum paham, silahkan baca meteri tentang mengambil input dan menampilkan output di Java.
Setelah itu, kita buat method insertBuku():
static void insertBuku() {
    try {
        // ambil input dari user
        System.out.print("Judul: ");
        String judul = input.readLine().trim();
        System.out.print("Pengarang: ");
        String pengarang = input.readLine().trim();
        
        // query simpan
        String sql = "INSERT INTO buku (judul, pengarang) VALUE('%s', '%s')";
        sql = String.format(sql, judul, pengarang);
        
        // simpan buku
        stmt.execute(sql);
        
    } catch (Exception e) {
        e.printStackTrace();
    }
}
Untuk melakukan query simpan, kita menggunakan method execute().
Method ini akan mengembalikan nilai booleantrue bila query berhasil dan false bila gagal.
Selanjutnya membuat method updateBuku():
static void updateBuku() {
    try {  
        // ambil input dari user
        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();

        // query update
        String sql = "UPDATE buku SET judul='%s', pengarang='%s' WHERE id_buku=%d";
        sql = String.format(sql, judul, pengarang, idBuku);

        // update data buku
        stmt.execute(sql);
        
    } catch (Exception e) {
        e.printStackTrace();
    }
}
Terakhir membuat method deleteBuku():
static void deleteBuku() {
    try {
        
        // ambil input dari user
        System.out.print("ID yang mau dihapus: ");
        int idBuku = Integer.parseInt(input.readLine());
        
        // buat query hapus
        String sql = String.format("DELETE FROM buku WHERE id_buku=%d", idBuku);
        // hapus data
        stmt.execute(sql);
        
        System.out.println("Data telah terhapus...");
    } catch (Exception e) {
        e.printStackTrace();
    }
}
Kode lengkapnya akan menjadi seperti ini:
package belajar.java.mysql;

import java.io.BufferedReader;
import java.io.InputStreamReader;

import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.Statement;
import java.sql.ResultSet;

public class JavaCRUD {

    static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
    static final String DB_URL = "jdbc:mysql://localhost/perpustakaan";
    static final String USER = "root";
    static final String PASS = "kopi";

    static Connection conn;
    static Statement stmt;
    static ResultSet rs;
    static InputStreamReader inputStreamReader = new InputStreamReader(System.in);
    static BufferedReader input = new BufferedReader(inputStreamReader);

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {

        try {
            // register driver
            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 {
            // ambil input dari user
            System.out.print("Judul: ");
            String judul = input.readLine().trim();
            System.out.print("Pengarang: ");
            String pengarang = input.readLine().trim();
 
            // query simpan
            String sql = "INSERT INTO buku (judul, pengarang) VALUE('%s', '%s')";
            sql = String.format(sql, judul, pengarang);

            // simpan buku
            stmt.execute(sql);
            
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    static void updateBuku() {
        try {
            
            // ambil input dari user
            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();

            // query update
            String sql = "UPDATE buku SET judul='%s', pengarang='%s' WHERE id_buku=%d";
            sql = String.format(sql, judul, pengarang, idBuku);

            // update data buku
            stmt.execute(sql);
            
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    static void deleteBuku() {
        try {
            
            // ambil input dari user
            System.out.print("ID yang mau dihapus: ");
            int idBuku = Integer.parseInt(input.readLine());
            
            // buat query hapus
            String sql = String.format("DELETE FROM buku WHERE id_buku=%d", idBuku);

            // hapus data
            stmt.execute(sql);
            
            System.out.println("Data telah terhapus...");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
Cobalah untuk mengeksekusi dan analisis sendiri hasinya 😄
Program CRUD Java dan MySQL

Akhir Kata…

Terima kasih sudah mengikuti tutorial ini sampai akhir. Bila ada yang belum jelas, bisa ditanyakan melalui komentar.

Komentar

Postingan populer dari blog ini

PROSEDUR PEMBUATAN INDIKATOR

PROSEDUR PEMBUATAN INDIKATOR 1. EBT (ERIOCROM BLACK T) Timbang 100 mg serbuk zat warna EBT ,10 gram Kristal NaCl atau Kristal Na2SO4 an hidrat. Kedua zat tersebut dicampur dengan cara menggerus didalam mortar sampai halus dan merata. Penggunaannya 100 mg (seujung spatel ) untuk satu kali titrasi. 2. Merah metil Larutkan 25 mg metil P dengan 0,95 ml larutan Natrium hidroksida 0,05 N dan 5 ml etanol 95 % setelah larut sempurna, tambahkan etanol 50 % secukupnya hingga 250,0 ml 3. Jingga metil Larutkan jingga metil P 0,04 % b/v dalam etanol 20 % 4. BTB Larutkan 100 mg biru brom timol P dengan 3,2 ml Natrium Hidroksida 0,05 N dan 5 ml etanol 90 % ,setelah larut sempurna tambahkan etanol 20 % secukupnya hingga 250,0 ml. 5. MUREXIDE Haluskan 100 mg serbuk murexide dengan 10 gram KNO3 atau 10 gram NaCl . Pada pemakaiannya 100 gram serbuk murexide tiap volume 150 sampai 200 ml. 6. Larutan indicator Fenolftalein 0,035 %. Timbang ± 0,035 gram Fenolftalein ,lar

LARUTAN PADA KIMIA ANALITIK KUANTITATIF

LARUTAN PADA KIMIA ANALITIK KUANTITATIF 1.        LARUTAN NaOH 0,1  N                 4 gram NaOH dalam 1 Liter 2.        LARUTAN HCl 0,1 N HCl pekat = 37% HCl pekat = 12 M = 12 N                 8,33 mL HCl pekat = 1 Liter 0,1 N 3.        LARUTAN H 2 SO 4 0,1 N H 2 SO 4 pekat = 96 % H 2 SO 4 pekat = 17,63 M = 18 M = 36 N        2,78 mL H 2 SO 4 pekat = 1 liter 0,1 N 4.        LARUTAN CH 3 COOH 0,1 N CH 3 COOH pekat = 99,5 % CH 3 COOH pekat = 17 M = 17 N        5,88 mL CH 3 COOHpekat = 1 liter 0,1 N 5.        LARUTAN Na 2 S 2 O 3 0,1 N             26 gram Na 2 S 2 O 3 dengan 0,2   g Na 2 CO 3 dilarutkan dalam air bebas CO 2 segar sampai volume 1000 ml 6.        LARUTAN KIO 3 0,1 N             3 , 5 g KIO 3 encerkan dengan air hingga 1000 m L 7.        LARUTAN KMnO 4 0,1 N      3,3 gram Kalium Permanganat P adat dilarutkan dalan air hingga 1000 ml 8.        LARUTAN IODIUM (I 2 ) 0,1 N 12,69 gram I 2 P adat ke dalam la

C++ #03 Mengenal Fungsi Input dan Output

Belajar C++ #03: Mengenal Fungsi Input dan Output pada C++ #  C++ Pada dasarnya, program komputer hanya terdiri dari tiga bagian: Input  adalah sesuatu data yang kita masukan ke dalam program. Input biasanya diambil dari perangakat inputan seperti keyboard, mouse, kamera, microphone, dll. Proses  adalah langkah-langkah yang harus dilakukan program untuk menghasilkan output. Output  adalah informasi yang dihasilkan setelah dilakukan proses. Output biasanya ditampilkan ke layar komputer. Pada bahasa pemrograman C++, terdapat beberapa fungsi dasar untuk menampilkan output dan mengambil input. Apa saja itu? Mari kita bahas… Fungsi Output pada C++ C++ memiliki empat fungsi dasar untuk menampilkan output: cout  untuk menampilkan teks ke layar; cerr  untuk menampilkan error; clog  untuk menampilkan log; printf()  untuk menampilkan output, fungsi ini dari C; Kita akan fokus memabahas yang dua saja, yakni  cout  dan  printf() . Soalnya  cerr  dan  clog