JDBC dalam 10 menit


Selamat datang saudara dari Indonesia. Pelajaran sederhana ini tentang JDBC dasar. Saudara akan membuat sebuah aplikasi Java yang bisa berkomunikasi dengan basis data.

Setiap metode yang pakai JDBC pasti ikut langkah yang berikut:

  • Langkah 1. Menyambungkan ke basis data.
  • Langkah 2. Bersiap sebuah perintah SQL.
  • Langkah 3. Bertanya perintah SQL dan mengambil hasilnya.
  • Langkah 4. Melepaskan sambungan.

Mari kita menyimpan orang-orang (persons) di basis data. Untuk setiap orang kita tertarik tentang 1. nama (name) 2. umur (age) dan 3. satu nomor yang unik (key).

  1. Instalasi MySQL
  2. Bangunan struktur basis data
  3. Memasukkan JDBC driver di classpath
  4. Bangunan kelas penyambung
  5. Bangunan model
  6. Memasukkan data (insert)
  7. Mengambil data (select)
  8. Mengubahkan data (update)
  9. Menhapus data (delete)
  10. Mencoba kalau semua sudah pas

Untuk aplikasi ini hanya tiga kelas harus dibuat: Connector kelas yang bisa menyambungkan ke basis data, Person kelas yang ada menggambarkan seorang dan PersonSQL kelas yang bisa memasukkan, mengubahkan, mengambil dan menghapus orang2 dari basis data itu.

1. Instalasi MySQL

Mendapatkan MySQL dari mysql.com → downloads → MySQL Community Server → Windows ZIP/Setup.EXE (x86) → Pick a mirror → No thanks, just take me to the downloads → Japan [JMPA] HTTP → mysql-5.0.51b-win32.zip

Mendapatkan JDBC driver MySQL (perhubungan antara Java dan MySQL, disebut driver atau connector dalam bahasa inggris) dari mysql.com → downloads → Connectors → Connector/J → Source and Binaries (zip) → Pick a mirror → No thanks, just take me to the downloads → Japan [JMPA] HTTP → mysql-connector-java-5.1.6.zip

MySQL dapat diinstal dengan mudah. Habis proses instalasi kotak dialog konfigurasi akan muncul. Pilih “Best Support For Multilingualism” dan tulis di kertas sandi administrator (root password).

Menaktifkan MySQL melalui Start → Programs → MySQL → MySQL Server 5.0 → MySQL Command Line Client → dan masukan sandi yang tadi.

2. Bangunan struktur basis data

Membuat sebuah struktur basis data di MySQL dengan create database hello;

Untuk memastikan ketiklah show databases; dan terus use hello;

Untuk membuat sebuah tabel di MySQL tulislah
CREATE TABLE persons (name VARCHAR(255), age SMALLINT, id BIGINT AUTO_INCREMENT, primary key (id));

Untuk memastikan ketik show tables; dan terus describe persons;

3. Memasukkan JDBC driver di classpath

Di dalam mysql-connector-java-5.1.6.zip ada mysql-connector-java-5.1.6-bin.jar. Ini cara untuk masukkan jar ini di classpath…

Kalau pakai Eclipse: Project → Java Build Path → Libraries → Add External JARs…

Kalau pakai Netbeans: File → “Project” Properties → Libraries → Add JAR/Folder

Kalau pakai JDeveloper 11g: Tools → Project Properties… → Libraries and Classpath → Add JAR/Directory…

4. Bangunan kelas penyambung

Kelas ini akan menyambung ke basis data dan akan melepaskan sambungan ini.

Pertama kita harus daftar JDBC driver,

     Class.forName("com.mysql.jdbc.Driver");

dan kasih tahu tentang nama user, sandi

     String username = "root";
     String password = "qweasdzxc";

dan url basis data,

     String url = "jdbc:mysql://127.0.0.1/hello";

Karena MySQL di komputer yang sama dengan aplikasi alamatnya 127.0.0.1. jdbc:mysql:// adalah protokol dan hello nama struktur basis data.

Inilah keseluruhan metode yang menyambungkan ke basis data.

public static Connection getConnection() throws Exception {
   Class.forName("com.mysql.jdbc.Driver");
   String username = "root";
   String password = "qweasdzxc";
   String url = "jdbc:mysql://127.0.0.1/hello";
   connection = DriverManager.getConnection(url, username, password);
   connection.setAutoCommit(false);
   return connection;
}

Inilah keseluruhan metode yang melepaskan sambungan dari basis data.

public static void closeConnection(PreparedStatement statement,
      ResultSet results, Connection connectionthrows Exception {
   if (statement != null) {
      statement.close();
      statement = null;
   }
   if (results != null) {
      results.close();
      results = null;
   }
   if (connection != null) {
      connection.close();
      connection = null;
   }
}

5. Bangunan model

Kelas ini menggambarkan seorang. Metodenya hanya get dan set (javabean).

public class Person implements Serializable {

   private String name;
   private int age;
   private int id;

   public int getAge() {
      return age;
   }

   public void setAge(int age) {
      this.age = age;
   }

   public int getId() {
      return id;
   }

   public void setId(int id) {
      this.id = id;
   }

   public String getName() {
      return name;
   }

   public void setName(String name) {
      this.name = name;
   }

}

6. Memasukkan data (insert)

Untuk memasukkan data mari kita ikut langkah yang empat:

Langkah 1. Menyambungkan ke basis data.

     Connector.getConnection();

Langkah 2. Bersiap sebuah perintah SQL.

     connection.prepareStatement("INSERT INTO persons(name, age) VALUES(?, ?)");
     statement.setString(1, person.getName());
     statement.setInt(2, person.getAge());

Langkah 3. Bertanya perintah SQL dan mengambil hasilnya.

     statement.executeUpdate();

Langkah 4. Melepaskan sambungan.

     Connector.closeConnection(...);

Mari kita lihat metode ini.

private Connection connection;
private PreparedStatement statement;

public boolean insert(Person personthrows Exception {
   boolean result = false;
   try {
      // step 1: connect to database
      connection = Connector.getConnection();
      // step 2: prepare the statement
      statement = connection.prepareStatement("INSERT INTO persons(name, age) VALUES(?, ?)");
      statement.setString(1, person.getName());

      statement.setInt(2, person.getAge());
      // step 3: execute the statement and get the results
      if (statement.executeUpdate() == 1) {
         result = true;
         connection.commit();
      }
   catch (Exception e) {
      connection.rollback();
      throw e;
   finally {
      // step 4: close the connection
      Connector.closeConnection(statement, null, connection);
   }
   return result;
}

7. Mengambil data (select)

Untuk mencari/mengambil data mari kita tetap ikut langkah yang empat:

Langkah 1. Menyambungkan ke basis data.

     Connector.getConnection();

Langkah 2. Bersiap sebuah perintah SQL.

     statement = connection.prepareStatement("SELECT * FROM persons WHERE id = ?");
     statement.setInt(1, id);

Langkah 3. Bertanya perintah SQL dan mengambil hasilnya.

     statement.executeQuery();

Langkah 4. Melepaskan sambungan.

     Connector.closeConnection();


public Person select(int idthrows Exception {
   Person person = null;
   try {
      // step 1: connect to database
      connection = Connector.getConnection();
      // step 2: prepare the statement and fill it
      statement = connection
            .prepareStatement("SELECT * FROM persons WHERE id = ?");
      statement.setInt(1, id);
      // step 3: execute and get the results
      set = statement.executeQuery();
      if (set.next()) {
         person = new Person();
         person.setName(set.getString("name"));
         person.setAge(set.getInt("age"));
         person.setId(set.getInt("id"));
      }
   finally {
      // step 4: close the connection
      Connector.closeConnection(statement, set, connection);
   }
   return person;
}

8. Mengubahkan data (update)

Untuk mengubah nilai data yang sudah tersimpan:

Langkah 1. Menyambungkan ke basis data.

     Connector.getConnection();

Langkah 2. Bersiap sebuah perintah SQL.

     statement = connection.prepareStatement("UPDATE persons SET name = ?, age = ? WHERE id = ?");
     statement.setString(1, person.getName());
     statement.setInt(2, person.getAge());
     statement.setInt(3, person.getId());

Langkah 3. Bertanya perintah SQL dan mengambil hasilnya.

     statement.executeUpdate();

Langkah 4. Melepaskan sambungan.

     Connector.closeConnection();


public boolean update(Person personthrows Exception {
   boolean result = false;
   try {
      // step 1: connect to database
      connection = Connector.getConnection();
      // step 2: prepare the statement and fill it
      statement = connection
            .prepareStatement("UPDATE persons SET name = ?, age = ? WHERE id = ?");
      statement.setString(1, person.getName());
      statement.setInt(2, person.getAge());
      statement.setInt(3, person.getId());
      // step 3: execute and get the results
      if (statement.executeUpdate() == 1) {
         result = true;
         connection.commit();
      }
   catch (Exception e) {
      connection.rollback();
      throw e;
   finally {
      // step 4: close the connection
      Connector.closeConnection(statement, null, connection);
   }
   return result;
}

9. Menhapus data (delete)

Langkah 1. Menyambungkan ke basis data.

     Connector.getConnection();

Langkah 2. Bersiap sebuah perintah SQL.

     statement = connection.prepareStatement("DELETE FROM persons WHERE id = ?");

Langkah 3. Bertanya perintah SQL dan mengambil hasilnya.

     statement.executeUpdate();

Langkah 4. Melepaskan sambungan.

     Connector.closeConnection();


public boolean delete(int idthrows Exception {
   boolean result = false;
   try {
      // step 1: connect to database
      connection = Connector.getConnection();
      // step 2: prepare the statement and fill it
      statement = connection
            .prepareStatement("DELETE FROM persons WHERE id = ?");
      statement.setInt(1, id);
      // step 3: execute and get the results
      if (statement.executeUpdate() == 1) {
         result = true;
         connection.commit();
      }
   catch (Exception e) {
      connection.rollback();
      throw e;
   finally {
      // step 4: close the connection
      Connector.closeConnection(statement, null, connection);
   }
   return result;
}

10. Mencoba kalau semua sudah pas

Pada saat ini saudara sudah membuat aplikasi yang bisa berkomunikasi dengan basis data. Tetapi mari kita berjaga2 dulu dan mencoba semua metode ini.

Misalnya, untuk mencoba metode insert kita bisa membuat seorang person dulu..

   Person person = new Person();
   person.setName("Al Pacino");
   person.setAge(68);

dan coba menyimpan di basis data.

   new PersonSQL().insert(person);

Untuk memastikan di MySQL command prompt SELECT * FROM persons;

Result of an SQL query

Kalau saudara punya waktu yang cukup silakan baca cara-cara Connection, Statement, PreparedStatement, ResultSet.

Sebelum selesai, saya ingin minta maaf karena bahasa Indonesia saya masih kurang. Kalau saudara ingin berkomunikasi mari meninggalkan pesan (comment) di bawa.

Terima kasih,
Nikos.

3 Responses to JDBC dalam 10 menit

  1. Dondy says:

    salam kenal…..,trm ksh atas tutorialnya, saya mau tanya kalau conection memakai oracle bagaimana dan saya membuatnya di jdeveloper,bisa posting tentang tutorial lengkapnya……., trm ksh bnyak…..

  2. ucup says:

    makasih Om…… gara” JDBC….tiap malem ga bisa tdur.. karna ga bisa” ngonect kan……….maklum msh awam thanx’s …tutorna. ..

  3. faisal says:

    Sangat membantu niko,
    terima kasih.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: