31 Oktober 2017
Java & MySQL (1) - Koneksi database dan Statement

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 : 1. Perintah Query : adalah perintah-perintah SQL yang mengembalikan hasil seperti SELECT, SHOW, dan DESC 2. Perintah Update : adalah perintah-perintah SQL yang tidak mengembalikan hasil seperti INSERT, UPDATE, DELETE, dan DROP

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());
    }
  }

}