Halo balik lagi di blog saya, nah kali ini sama mau share lagi tentang JDBC yaitu Java Database Connectivity. Nah JDBC ini adalah salah satu teknologi yang penting jika ingin membuat aplikasi yang berbasis Database seperti membuat aplikasi berbasis Sistem Informasi. karena konsepnya sendiri dari sistem informasi adalah
- Input
- Proses
- Output
Untuk menghandle input yang paling mudah adalah dengan menggunakan database sebenarnya bisa saja kita tanpa menggunakan database tetapi menggunakan sebuah file untuk menampung datanya tapi menurut saya itu ribet dan butuh proses panjang dalam melakukan pencarian datanya maka dari itu disini kita menggunakan database.
Konsep database sendiri dari dulu adalah mengederhanakan proses input, update, delete dan pencarian data yang bisa lebih cepat dibandingkan menggunakan file. Nah jadi langsung aja kita praktek, seperti yang telah anda ketahui saya akan menjelaskan menggunakan teknologi Java untuk mengakses Database yaitu dengan JDBC dengan pembahasan CRUD atau kependekan dari Create Read Update Delete dalam bahasa indonesia yaitu Tambah data, Ubah data, Baca data dan Hapus data. sebelum anda membaca artikel ini diharapkan anda telah memahami konsep SQL yaitu sebagai berikut:
- Data Definition Language (CREATE, DROP, ALTER)
- Data Manipulation Language (INSERT, UPDATE, DELETE)
- Trancation Control Language (COMMIT, ROLLBACK)
- SELECT
Nah sekarang kita balik lagi ke topik, saya akan menggunakan sebuah IDE atau Integrated Development Environment yaitu Netbeans. so let’s started now
Membuat Java Project di Netbeans
ok, langsung aja buka Netbeans IDE.
Kemudian pada menu pilih file -> New Project -> Categories pilih Java Project -> Projects pilih Java Application, maka tampilanya seperti berikut:
setelah itu klik Next. kemudian input Project Name jdbc-mysql
, Project Location bebas terserah anda tpi klo saya disimpan di home/dimMaryanto/temp/fundamental-java-belajar
dan unchek untuk Created Main Class karena saya mau membuatnya dengan manual. maka hasilnya seperti berikut:
kemudian klik Finish, maka Netbeans akan membuatkan kita project dengan Struktur directory seperti berikut:
tahap membuat project di Netbeans telah selesai, berikut nya adalah membuat database.
Membuat database dan tabel di MariaDB
Untuk membuat database pada dasarnya ada banyak cara mulai dari menggunakan tools diantranya:
- Netbeans editor (tab service -> database editor)
- PhpMyAdmin (browser)
- MySQL Workbench (sql editor buatan MySQL)
- Command line (terminal / cmd)
Login sebagai role ‘ROOT’
ok, karena ini kasusnya adalah belajar jadi kita pake tools yang paling simple aja dulu yaitu command line ya tpi klo mau pake yang lain silahkan aja. so jadi kita login dulu ke user / schema root.
mysql -u root -p
berikut outputnya:
Enter password: # masukan password root anda klo saya passwordnya admin
klo berhasil login maka tampilanya seperti berikut:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 10.0.23-MariaDB MariaDB Server
Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
ada yang aneh? jadi saya database memenggunakan MariaDB ya bukan MySQL tpi secara sql sama aja kok.
Membuat database jdbc_mysql
Membuat databasenya berikut adalah perintah sqlnya:
berikut outputnya:
Query OK, 1 row affected (0.00 sec)
Membuat table mahasiswa
selanjutnya adalah membuat table, jadi kali ini studi kasusnya adalah pendataan mahasiswa dalam sebuah universitas yang memiliki jurusan ‘SI’ dan ‘MI’. SI adalah Jurusan Sistem Informasi dan MI adalah jurusan Management Informatika. jadi kita buat table mahasiswa yang terdiri dari NIM, Nama, Jurusan. berikut adalah perintah sqlnya:
Exekusi perintah tersebut maka akan menampilkan output seperti berikut:
Database changed
Query OK, 0 rows affected, 2 warnings (0.19 sec)
setelah itu kita bisa lihat struktur table mahasiswa dengan perintah sql berikut:
berikut outputnya:
+---------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| nim | varchar(8) | NO | PRI | NULL | |
| nama | varchar(50) | NO | | NULL | |
| jurusan | varchar(2) | NO | | NULL | |
+---------+-------------+------+-----+---------+-------+
3 rows in set (0.02 sec)
ok setelah membuat database dan tabel di mysql kita balik lagi ke koding Java.
Membuat koneksi ke database jdbc_mysql
di Mysql
sebelum kita nulis koding ada baiknya kita siapkan dulu dependency-nya atau lebih sering disebut library pihak ke tiga yaitu MySQL JDBC Driver
berikut adalah cara menambahkan library-nya ke class path di netbeans pada panel Project jdbc_mysql
, buka tree view kemudian anda dapat melihat terdapat Source Package
dan Libraries
, pada item Libraries
klik kanan -> Add Libary setelah itu cari MySQL JDBC Driver
kemudian klik Add Library maka hasilnya seperti berikut:
tahap selanjutnya kita harus membuat jembatan antara Java dengan Database Mysql supaya biasa terkoneksi. yang perlu diingat adalah Netbeans itu bukan bahasa pemograman ya! jadi gini ada beberapa waktu lalu ada pertanyaan kurang lebih seperti ini
master, kang, pak or whatever lah pokoknya. bagaimana cara bikin netbeans terhubung dengan XAMPP?
nah loh, gimana binggung khan? XAMPP != Database Management System
klo anda cermati XAMPP itu software paketan yang isinya biasanya Web Server untuk PHP, Database MySQL dan ada juga untuk PostgreSQL atau SQLite, Wordpress dan lain-lain.
ok, saya rasa paham ya magsud saya. jadi siapkan diri anda kita sekarang akan bener-bener ngoding!. write started now.
Memulai koding Java di Netbeans
pertama yang harus dilakukan adalah membuat class baru dengan nama MainAplikasi
yang berfungsi sebagai kelas utama dan karena aplikasi yang kita buat bukan aplikasi yang sifat-nya production jadi saya mau semua dibuat dalam satu class tersebut. berikut adalah langkah-langkahnya:
Pada menubar klik file -> New File -> Categories pilih Java dan File Types pilih Java Class berikut ini hasilnya:
Klik Next, Kemudian input untuk Class Name: MainApplication
, Location: Source Packages
, Packages: belajar.jdbc
berikut ini hasilnya:
Klik Finish, maka berikut ini hasilnya:
Tahap selanjutnya adalah membuat main method dalam class tersebut seperti berikut:
package belajar.jdbc;
public class MainApplication {
public static void main(String[] args) {}
}
Untuk menghubungkan antara Java dengan database kita butuh objek java.sql.Connection
dan java.sql.DriverManager
. jadi objek DriverManager
digunakan untuk mengembalikan objek Connection
artinya si objek DriverManager
akan melakukan ping (konsep jaringan komputer) ke database apakah nama database tersebut dengan port sekian tersedia di sistem database managementnya si MySQL kalo ada maka kembalikan si objek Connection
klo tidak ada kembalikan nilai null
nah jadi begitu kurang lebih ceritanya tentang DriverManager
dan Connection
. Berikut adalah implementasinya:
klo dijalankan melalui Netbeans IDE caranya dengan klik kanan pada file MainApplication.java
kemudian Run File atau Shift + F6
maka outpunya seperti berikut:
run:
Database ditemukan!
BUILD SUCCESSFUL (total time: 0 seconds)
Penjelasannya dari koding diatas adalah:
- URL =
jdbc:mysql://localhost:3306/jdbc_mysql
jdbc
dalam URL adalah teknologi yang dipakai menggunakan JDBC selain JDBC ada juga ODBC dan lain-lain.mysql
nama database management system yaitu MySQL. selain MySQL ada lagi database yang support dengan teknologi JDBC yaitu biasa dilihat disinilocalhost
adalah tempat dimana database diinstal karena saya install dikomputer sendiri maka localhost atau bisa juga menggunakan ip address127.0.0.1
3306
adalah port default MySQL. biasanya port ini akan berbeda setiap database lainnya misal postgresql adalah5432
jdbc_mysql
adalah nama database di database management system.
- DriverManager =
DriverManager(param1, param2, param3);
param1
adalah argument untuk mementukan URL, java akan melakukan ping ke URL tersebut dan akan mengembalikan objekjava.sql.Connection
jika database ditemukan.param2
adalah user / schema dari database.param3
adalah password dari user database tersebut.
koneksi.close();
, hal ini yang sering dilupakan oleh setiap programmer awam. jadi setiap koneksi yang dibuka harus lah ditutup kembali karena pada dasarnya klo setiap database management system akan membuka session-nya setiap kali ada koneksi yang dipanggil. Bayangkan saja klo misal kita memanggil atau melakukan query yang tinggi (jumlah yang banyak > 1000 query) ini akan menyebebkan server database menjadi lemot karena session yang dibuka terlalu banyak maka dari itu sekali lagi yang perlu diingat adalah setiap koneksi yang dibuka setelah selasai maka harus ditutup kembali.
Setelah membuat koneksi tahap selanjutnya anda dapat melakukan operasi CRUD, jadi sekarang saya mau membuat atau menambahkan data ke database terselibih dahulu. berikut ini langkah-langkahnya
Insert data ke Tabel Mahasiswa
nah, sekarang kita akan mulai dengan Insert data ke database, jadi sebelum kita ngoding sebaiknya kita siapkan dulu query dan periksalah apakah query yang dibuat udah benar apa belum. berikut ini adalah query insert data untuk table mahasiswa:
setelah itu coba execuksi di database mysql, dan berikut ini adalah outpunya:
Query OK, 1 row affected (0.05 sec)
kemudian periksa apakah data yang diinsert telah masuk sesuai dengan columnnya dengan perintah tampilkan data menggunakan query select seperti berikut:
berikut adalah outputnya:
+----------+----------------+---------+
| nim | nama | jurusan |
+----------+----------------+---------+
| 10511148 | Dimas Maryanto | SI |
+----------+----------------+---------+
1 row in set (0.00 sec)
jika anda perhatikan sama ya! apa yang kita input dan hasil query yang ditampilkan berdasarkan nim 10511148
.
setelah itu kita bisa melakukan koding, jadi untuk melakukan Insert data. sebenarnya ada banyak cara mulai dari menggunakan objek java.sql.Statement
atau java.sql.PreparedStatement
tapi disini saya sarankan menggunakan PreparedStatement
karene hal tersebut bisa mengghindari salah satu serangan atau hacking dengan methode SQL Injection
Berikut adalah implementasi untuk Insert data database melalui Java dengan PreparedStatement:
setelah itu coba jalankan dengan Run File dari Netbeans IDE, berikut ini hasilnya:
run:
sebelum set value: com.mysql.jdbc.JDBC4PreparedStatement@26a1ab54: INSERT INTO mahasiswa (nim, nama, jurusan) VALUES (** NOT SPECIFIED **,** NOT SPECIFIED **,** NOT SPECIFIED **)
setelah set value: com.mysql.jdbc.JDBC4PreparedStatement@26a1ab54: INSERT INTO mahasiswa (nim, nama, jurusan) VALUES ('10511150','Riansyah Permana','SI')
BUILD SUCCESSFUL (total time: 0 seconds)
ok, nah klo anda perhatikan hasil eksekusi java tersebut berjalan dengan baik ok jadi sekaran kita tinggal cek bagaimana data di database apakah sesuia dengan apa yang kita input berikut ini adalah querynya:
berikut ini adalah hasilnya:
+----------+------------------+---------+
| nim | nama | jurusan |
+----------+------------------+---------+
| 10511150 | Riansyah Permana | SI |
+----------+------------------+---------+
1 row in set (0.00 sec)
kalo dilihat apa yang diinput sesuia ya. ok selanjutnya kita bahas tentang koding insert tadi baris-perbaris.
Pembahasananya:
String sql = "INSERT INTO mahasiswa (nim, nama, jurusan) VALUES (?,?,?)";
PreparedStatement ps = koneksi.prepareStatement(sql);
PreparedStatement
ini sebenarnya sama sepertiStatement
hanya dia memiliki keunggulan di keamanan query. jadiPreparedStatement
ini biasanya digunakan untuk query yang menggunakan parameter masukan seperti INSERT, UPDATE, DELETE, SELECT menggunakan clausa WHERE.koneksi.prepareStatement(sql);
jadi untuk menggunakan PreparedStatement kita harus menyipkan dulu SQL mentah? magsudnya mentah apa?, jadi magsud saya perintah SQL yang valuenya tidak didefinisikan secara langsung di sql atau bahasa kerennya hardcode contohnya seperti berikut untuk sql yang sifatnya hardcodeINSERT ... VALUES ('10511148','Dimas M','SI')
. jadi sebagai gantinya menggunakan question mark?
untuk menujukan suatu kolom tertentu di database. nanti kita akan bahas lebih lanjut di artikel berikutnya.
System.out.println("sebelum set value: "+ps.toString());
perintah berikut hanya menampilkan keterangan aja hasilnya seperti berikutsebelum set value: com.mysql.jdbc.JDBC4PreparedStatement@26a1ab54: INSERT INTO mahasiswa (nim, nama, jurusan) VALUES (** NOT SPECIFIED **,** NOT SPECIFIED **,** NOT SPECIFIED **)
jdi kalo diperhatikan lagi dalamVALUES()
bernilai** NOT SPECIFIED **
artinya nilainya belum diset.ps.setString(1, "10511150");
method ini pada intinya adalah untuk melakukan set nilai pada kolom berdasarkan index yang diset tersebut.- method
setString(arg1, arg2)
adalah method yang merepresentasikan tipe data nilai yang akan dimasukan contohnya pada kolom pertama (nim
) khan bernilaivarchar(8)
itu artinyavarchar
bisa bernilai angka, huruf, simbol maka untuk memparsing ke tipe data tersebut ke database menggunakan methodsetString()
. - argument pertama
1
menandakan dia akan mengisi nilai pada kolumnnim
, jika di isi dengan2
maka dia mengisi nilai pada kolomnama
dan jika di ini dengan3
maka dia akan mengisi nilai pada kolomjurusan
. - argument ke 2
10511150
dia adalah nilainya jadi pada argument ke1
dan argument ke 2 bernilai tersebut kesimpulanya adalahnim
diisi dengan10511150
.
- method
System.out.println("setelah set value: " + ps.toString());
sama seperti penjelasan sebelumnya hanya menampilkan log. bahwa datanya telah terisi apa belum.ps.executeUpdate();
method ini digunakan untuk melakukan perubahan data pada database seperti INSERT, UPDATE, dan DELETE.
ok, bagaimana mudah khan? klo ada yang mau tanyakan sialahkan email saya saja insyaaloh fast response (kalo tidak sibuk ya…). nah selanjutnya kita akan bahas tentang update data.
Update data pada Tabel Mahasiswa
Untuk update data pada dasarnya sama seperti insert hanya yang berbeda adalah query dan paramenternya. contoh kasusnya disini saya mau mengupdate jurusan yang nimnya = 10511148
menjadi IF
. ok berikut tahapanya:
pastikan data dengan nim 10511148
tersedia di table mahasiswa, silahkan cek dulu kalo belum ada berikut sqlnya:
Sekarang kita buat querynya dulu untuk mengupdate data mahasiswa dengan nim 10511148
untuk kolom yang mau diupdate adalah jurusan dengan nilai IF
berikut sqlnya:
setelah itu coba eksekusi, berikut outpunya:
Query OK, 1 row affected (0.05 sec)
Rows matched: 1 Changed: 1 Warnings: 0
kemudian coba lihat hasil perubahannya dengen perintah select berikut:
berikut outpunya:
+----------+----------------+---------+
| nim | nama | jurusan |
+----------+----------------+---------+
| 10511148 | Dimas Maryanto | IF |
+----------+----------------+---------+
1 row in set (0.00 sec)
ok, data berhasil terupdate ya! dari jurusan awalnya adalah SI
sekarang menjadi IF
. selanjutnya kita buat kodingnya:
setelah itu coba jalankan dengan Run File dari Netbeans IDE, berikut ini hasilnya:
run:
sebelum set value: com.mysql.jdbc.JDBC4PreparedStatement@26a1ab54: UPDATE mahasiswa SET jurusan = ** NOT SPECIFIED ** WHERE nim = ** NOT SPECIFIED **
setelah set value: com.mysql.jdbc.JDBC4PreparedStatement@26a1ab54: UPDATE mahasiswa SET jurusan = 'IF' WHERE nim = '10511150'
BUILD SUCCESSFUL (total time: 1 second)
jadi dari output diatas jalannya. ok selanjutnya kita cek apakah nim 10511150
jurusannya telah terupdate menjadi IF
berikut sqlnya:
berikut hasilnya:
+----------+------------------+---------+
| nim | nama | jurusan |
+----------+------------------+---------+
| 10511150 | Riansyah Permana | IF |
+----------+------------------+---------+
1 row in set (0.00 sec)
ok berarti update data berhasilnya.
Penjelasan dari koding tersebut tidak akan saya bahas kembali karena pada dasarnya sama seperti insert data. selanjutnya kita akan membuat fungsi hapus sebuah data seorang mahasiswa.
Hapus data pada Tabel Mahasiswa
Untuk hapus data, pada dasarnya sama aja seperti insert dan update hanya yang beda adalah querynya, seperti biasa sebelum kita ngoding dengan Java kita siapkan dulu data dan query untuk hapus data. jadi kasusnya saya mau menghapus data mahasiswa yang memiliki nim 10511148
, pastikan nim 10511148
udah ada di dalam tabel mahasiswa jika belum ada berikut sqlnya:
ok, setelah adatanya ada kita buat querynya dulu. berikut adalah perintah sql untuk menghapus data mahasiswa yang memiliki nim 10511148
:
setelah itu coba eksekusi, berikut output yang dihasilkan:
Query OK, 1 row affected (0.04 sec)
kemudian kita cek ada gak datanya jika select menggunakan perintah berikut:
berikut hasilnya:
Empty set (0.00 sec)
jadi perintah deletenya udah bener ya!. nah sekarang baru kita ngoding dengan Java. berikut adalah implementasinya:
setelah itu coba jalankan dengan Run File dari Netbeans IDE, berikut ini hasilnya:
run:
sebelum set value: com.mysql.jdbc.JDBC4PreparedStatement@26a1ab54: DELETE FROM mahasiswa WHERE nim = ** NOT SPECIFIED **
setelah set value: com.mysql.jdbc.JDBC4PreparedStatement@26a1ab54: DELETE FROM mahasiswa WHERE nim = '10511150'
BUILD SUCCESSFUL (total time: 0 seconds)
ok, jadi kita lihat outpunya tidak ada error ya berarti data berhasil dihapus dari table mahasiswa. selanjutnya kita akan membuat fungsi untuk menampilkan semua data dari table mahasiswa.
Menampilkan semua data Mahasiswa
ok, sekarang kita akan menampilkan semua data dari table mahasiswa. nah sekarang kita bisa menggunakan objek Statement
karena tidak memiliki paramenter masukan seperti fungsi yang sebelumnya dibahas. tpi sebenernya bebas aja mau pake PreparedStatement
atau mau pake Statement
juga ok, tpi kali ini saya bahas dulu ya dengan menggunakan Statement
supaya ada gambaran perbedaannya. Seperti biasa kita buat dulu query untuk menampilkan semua data dari tabel mahasiswa, berikut adalah perintah sqlnya tpi pastikan telah melakukan insert data kembali karena kita telah menghapus ke 2 data tadi di fungsi sebelumnya:
berikut outputnya yang dihasilkan:
Query OK, 3 rows affected (0.03 sec)
Records: 3 Duplicates: 0 Warnings: 0
selanjutnya kita tampilkan semua data yang telah diinsert barusan, berikut perintah sqlnya:
setelah itu coba di eksekusi, maka outputnya akan seperti berikut:
+----------+----------+---------+
| nim | nama | jurusan |
+----------+----------+---------+
| 10511148 | Dimas | SI |
| 10511150 | Riansyah | SI |
| 10511173 | Hanif | SI |
+----------+----------+---------+
3 rows in set (0.00 sec)
jadi kita memiliki 3 record data ya. nah sekarang kita langsung aja koding menggunakan Java. berikut implementasinya:
setelah itu coba jalankan dengan Run File dari Netbeans IDE, berikut ini hasilnya:
run:
NIM: 10511148, Nama: Dimas, Jurusan: SI
NIM: 10511150, Nama: Riansyah, Jurusan: SI
NIM: 10511173, Nama: Hanif, Jurusan: SI
BUILD SUCCESSFUL (total time: 0 seconds)
ok mungkin sekian dulu pembahasan tentang JDBC sederhana ini, Semoga bermanfaat~.