Anda di halaman 1dari 21

Tutorial Java dan MySQL: Membuat

Program CRUD Berbasis Teks


# Java # MySQL # JDBC

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: MySQL, SQLite, 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.
Berikan nama: belajar-java-mysql.
Sebelum mulai coding, siapkan dulu databasenya.

Silahkan buat database baru bernama  perpustakaan.


Setelah itu buat tabel bernama  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 .

Bagaimana cara menambahkannya?

Klik kanan pada Libraries, lalu pilih Add Library dan MySQL


JDBC Driver:
Setelah itu, baru bisa di-run atau dieksekusi.

Tekan Shift+F6 atau klik kanan–>Run File.


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.

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.
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 Create, Read, Update, 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  boolean: true 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   …

Anda mungkin juga menyukai