Pada tutorial ini kita akan belajar menghubungkan aplikasi java dengan database MySQL dengan API Java Database Connectivity (JDBC).
Import Class
Terdapat beberapa class yang harus diimport kedalam program java
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
Registrasi Driver
Driver untuk database MySQL disediakan dalam paket MySQL Connector/J yang bisa didownload dari halaman ini. Ekstrak file .zip
atau .tar.gz
yang sudah didownload, kemudian tempatkan file-file .jar
kedalam CLASSPATH. Untuk registrasi driver sendiri dilakukan dengan menggunakan metode statik DriverManager.registerDriver()
.
try {
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
}
catch(SQLException exc) {
System.err.println("Terjadi error : " + exc.toString());
}
Koneksi ke Database
Untuk membentuk koneksi ke database kita gunakan metode statik DriverManager.getConnection()
. Metode ini akan mengembalikan objek Connection
.
try {
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
Connection koneksi = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/namadb", "root", "p455w0rd");
}
catch(SQLException exc) {
System.err.println("Terjadi error : " + exc.toString());
}
Membuat Objek Statement
Untuk bisa mengeksekusi perintah SQL, kita membutuhkan objek Statement
, objek ini didapatkan dengan menggunakan metode createStatement()
dari objek koneksi
yang sudah terbentuk sebelumnya.
try {
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
Connection koneksi = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/namadb", "root", "p455w0rd");
Statement stmt = koneksi.createStatement();
}
catch(SQLException exc) {
System.err.println("Terjadi error : " + exc.toString());
}
Eksekusi Perintah SQL
Perintah SQL terbagi menjadi dua kelompok yaitu :
- Perintah Query : adalah perintah-perintah SQL yang mengembalikan hasil seperti
SELECT
,SHOW
, danDESC
- Perintah Update : adalah perintah-perintah SQL yang tidak mengembalikan hasil seperti
INSERT
,UPDATE
,DELETE
, danDROP
Untuk perintah-perintah query kita gunakan metode executeQuery()
, sedangkan untuk perintah-perintah SQL update kita gunakan metode executeUpdate()
. Kedua metode disediakan dalam objek stmt
yang sudah terbentuk sebelumnya.
Eksekusi Perintah Query
Metode executeQuery()
akan mengembalikan objek ResultSet
.
try {
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
Connection koneksi = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/namadb", "root", "p455w0rd");
Statement stmt = koneksi.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM namatabel");
}
catch(SQLException exc) {
System.err.println("Terjadi error : " + exc.toString());
}
Eksekusi Perintah Update
Metode executeUpdate()
akan mengembalikan nilai integer, yaitu jumlah row yang terdampak dari perintah SQL.
try {
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
Connection koneksi = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/namadb", "root", "p455w0rd");
Statement stmt = koneksi.createStatement();
int row = stmt.executeUpdate("INSERT INTO namatabel VALUES ('nilaikolom1', 'nilaikolom2')");
System.out.println("Jumlah baris baru : " + row); // 1
}
catch(SQLException exc) {
System.err.println("Terjadi error : " + exc.toString());
}
Memproses ResultSet
Objek ResultSet
dapat diproses dengan menggunakan perulangan while
. Metode yang digunakan bersama perulangan ini adalah metode next()
yang mengembalikan nilai boolean true jika masih terdapat data dalam ResultSet
dan false jika sudah tidak ada data dalam ResultSet
.
Selebihnya untuk mendapatkan nilai kolom, kita gunakan perintah getXxx()
dengan parameter nama atau index kolom, dimana xxx
adalah tipe data dari kolom tabel. Misalnya tipe data kolom adalah CHAR
, VARCHAR
, atau TEXT
, kita gunakan metode getString()
, semisal tipe data kolom adalah INT
kita gunakan metode getInt()
;
try {
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
Connection koneksi = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/namadb", "root", "p455w0rd");
Statement stmt = koneksi.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM namatabel");
while(rs.next()) {
String nama = rs.getString("nama");
int umur = rs.getInt("umur");
System.out.println(nama);
System.out.println(umur);
}
}
catch(SQLException exc) {
System.err.println("Terjadi error : " + exc.toString());
}
Kode Lengkap
Kode selengkapnya sebagai berikut :
// ExcJDBC01.java
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class ExcJDBC01 {
public static void main(String[] args) {
try {
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
Connection koneksi = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/namadb", "root", "p455w0rd");
Statement stmt = koneksi.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM namatabel");
while(rs.next()) {
String nama = rs.getString("nama");
int umur = rs.getInt("umur");
System.out.println(nama);
System.out.println(umur);
}
}
catch(SQLException exc) {
System.err.println("Terjadi error : " + exc.toString());
}
}
}