JDBC Imam Fahrur Rozi Pokok Bahasan • Pengantar JDBC • Langkah Penggunaan JDBC Pengantar JDBC JDBC • Java Data Base Conec;vity • JDBC menyediakan library yang digunakan untuk mengakses RDBMS • Class-­‐class dari JDBC ada di dalam paket java.sql Arsitektur JDBC • JDBC support baik arsitektur 2 ;er ataupun 3 ;er dalam hal akses database • Pada aplikasi 2 ;er, aplikasi Java akan berkomunikasi langsung dengan database menggunakan JDBC • Letak database server bisa di mesin lokal atau di remote yang terhubung melalui jaringan Arsitektur JDBC • Pada aplikasi 3 ;er, aplikasi Java akan berkomunikasi dengan database melalu middle +er. • Middle Tier yang akan melanjutkan perintah atau permintaan dari aplikasi ke database. • Data hasil eksekusi perintah di database akan dikirimkan kembali ke middle ;er, dan oleh middle ;er akan dikirimkan kembali ke aplikasi JDBC Driver • JDBC terdiri dari 2 bagian: – JDBC API: merupakan sekumpulan Java Class yang tergabung dalam JDBC – JDBC Driver Manager, yang akan berkomunikasi dengan driver dari vendor database( driver yang akan melakukan komunikasi yang sesungguhnya dengan database) Langkah Penggunaan JDBC Langkah Penggunaan JDBC • • • • • • • Load Driver Definisikan URL untuk koneksi Buat koneksi Buat objek Statement Eksekusi query Proses hasil eksekusi query Tutup koneksi Langkah 1: Load Driver • Tidak diperlukan pada Java 6, ar;nya pada Java 6 dan versi setelahnya, driver akan ter-­‐ load secara otoma;s • Diperlukan pada Java 5 dan versi-­‐versi sebelumnya Langkah 2: Definisikan URL Koneksi • Format URL koneksi utk Derby database (Embedded Database) – Apache Derby (dikenal dg Java DB) merupakan database yang ter-­‐embed dalam JVM atau masuk dalam bundle Java 6 – Format koneksi “jdbc:derby:dbName” • Format URL koneksi untuk DB non-­‐embedded “jdbc:vendorName//dbhostname:port//dbName” : Langkah 3: Buat koneksi • Cara membuat object connec+on: • [op;onal] Jika ingin melihat info tentang DBMS yang digunakan Langkah 4: Buat Objek Statement • Objek Statement digunakan untuk mengirimkan perintah atau query yang akan dieksekusi oleh DBMS • Beberapa ;pe Statement: – Statement – PreparedStatement – CallableStatement Langkah 5: Eksekusi Query • Eksekusi query: – statement.executeQuery(“SELECT…..FROM…”); • Akan menghasilkan objek ResultSet yang berisi data hasil query – statement.executeUpdate(“UPDATE….”); – statement.executeUpdate(“INSERT…..”); – statement.executeUpdate(“DELETE….”); – statement.execute(“CREATE TABLE….”); – statement.execute(“DROP TABLE….”); • Contoh: Langkah 6: Proses hasil • Beberapa method/operasi pen+ng dari objek ResultSet antara lain: – resultSet.next() • Mengambil data pada record/row selanjutnya. Jika ;dak ada data selanjutnya, maka akan menghasilkan false. – resultSet.getString(“columnName”) • Mengambil nilai String yang tersimpan dalam nama kolom yang disebutkan. Berlaku juga untuk getInt, getDouble, getBlob, dsb. – resultSet.getString(columnIndex) • Mengambil nilai String yang tersimpan dalam nomor indeks dari suatu kolom. Indeks pertama (untuk kolom pertama) adalah 1 (BUKAN 0) – resultSet.beforeFirst() • Untuk meletakkan cursor sebelum record/row pertama – resultSet.absolute(rowNum) • Untuk meletakan cursor pada row yang diberikan. Row pertama adalah 1 Langkah 6: Proses hasil • Contoh: – ResultSet resultSet = connec+on.executeQuery(“SELECT first, last, address FROM biodata WHERE …..”); • Menggunakan nama kolom/field • Menggunakan indeks kolom/field Langkah 7: Tutup Koneksi • Ke;ka operasi database sudah selesai semua dan ;dak dibutuhkan lagi, maka TUTUP KONEKSI ke DB tersebut. Jika masih diperlukan untuk mengakses database tersebut, maka lebih baik jangan tutup dulu koneksi tsb. Karena mengirimkan perintah query ke objek connec+on yang sudah terbuat dan terbuka, akan lebih efek+f daripada harus membuat objek connec+on baru lagi. • Contoh: PreparedStatement CallableStatement • Baik PreparedStatement maupun CallableStatement merupakan bentuk yang lebih khusus dari Statement PreparedStatement • Digunakan ke;ka ada perintah SQL yang sama, dilakukan secara berulang kali, dengan nilai yang berbeda. Misal, perintah SQL untuk INSERT banyak data, sebenarnya secara perintah SQL sama, tetapi nilai yang akan di-­‐ insert berbeda-­‐beda. • PreparedStatement bisa menerima input data (parameter) saat run;me, dimana data tsb yang akan diolah dalam perintah SQL Statement vs PreparedStatement • Untuk Statement, ke;ka pembuatan objek Statement, ;dak diberikan perintah SQL. Perintah SQL baru akan diberikan saat eksekusi. Statement st = conn.createStatement(); st.executeUpdate(perintahQuery); Statement vs PreparedStatement • Untuk PreparedStatement, ke;ka pembuatan objek PreparedStatement, sekaligus diberikan perintah SQL. PreparedStatement pst = conn.prepareStatement(perintahQuery); Contoh Penggunaan PreparedStatement String sql = “INSERT INTO tbCar (idCar,name,prodYear,km) VALUES (?,?,?,?)”; PreparedStatement pst = conn.prepareStatement(sql); pst.setString(1,”c01” ); Tempat paremeter pst.setString(2,”Blazer” ); pst.setInt(3,2000 ); Mengisi/melewatkan nilai paremeter pst.setInt(4,50000); pst.executeUpdate(); ////////////////////////////// pst.setString(1,”c02” ); pst.setString(2,”Audi” ); pst.setInt(3,2010 ); pst.setInt(4,500); pst.executeUpdate(); CallableStatement • Digunakan untuk pemanggilan Stored Procedure yang ada dalam database • CallableStatement juga bisa menerima input data (parameter) saat run;me. Contoh CallableStatement DELIMITER // CREATE PROCEDURE proc() BEGIN SELECT * FROM emp; END; DELIMITER ; Contoh CallableStatement CallableStatement cstmt = conn.prepareCall(“{call proc}”); ResultSet rs = cstmt.executeQuery(); …..dst….. Fitur lanjut JDBC Transac;ons • Secara default, setelah JDBC mengirimkan perintah ke database dan database telah mengeksekusinya, maka secara otoma;s perubahan yang terjadi akan langsung berpengaruh ke database yang bersangkutan (AUTO COMMIT) • Jika ingin menon-­‐ak;nan fitur Ato Commit, gunakan method: • Panggil method commit(), untuk menerapkan perubahan yang dihasilkan terhadap database • Gunakan method rollback(), jika terjadi error ke;ka eksekusi dan ;dak menerapkan perubahan ke database Transac;ons: Contoh Contoh Kasus 1. Buat Database di MySQL • Buat database RentCarDB create database RentCarDB; 2. Buat Tabel tbCar • Seleksi database RentCarDB use RentCarDB; • Buat tabel create table tbCar ( idCar varchar(20) primary key, name varchar(25), prodYear int, km int ); 3. Buat JFrame Form • Buat window dengan menggunakan JFrame Form dengan nama RentCarForm • Berikan +tle berupa Rent Car Form 4. Buat Form Input Data 5. Buat Form Browse Data 6. Tambahkan Atribut Connec;on dan Statement Dari proses penambahan atribut Connec;on dan Statement, akan membutuhkan import class Connec+on dan Statement yang ada dalam paket java.sql. 7. Tambahkan Library MySQL JDBC Driver ke Project • Klik kanan pada Libraries, dan pilih Add Library • PilihMySQL JDBC Driver 8. Inisialisasi Koneksi ke DB • Lakukan di dalam konstruktor 9. Buat Operasi Insert • Double klik tombol Submit 10. Buat Operasi Browse • Double klik tombol Browse Your Turn …. • Buat Event Handler untuk tombol Reset dan Delete END