pengantarjdbc · • jdbc menyediakan$library$yang$digunakan$ untuk$mengakses$rdbms$ ... •...

43
JDBC Imam Fahrur Rozi

Upload: phungduong

Post on 03-Jul-2019

214 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: PengantarJDBC · • JDBC menyediakan$library$yang$digunakan$ untuk$mengakses$RDBMS$ ... • Pada$aplikasi3er,$ aplikasi$ Java akan$berkomunikasi$ dengan$database$melalu$

JDBC  

Imam  Fahrur  Rozi  

Page 2: PengantarJDBC · • JDBC menyediakan$library$yang$digunakan$ untuk$mengakses$RDBMS$ ... • Pada$aplikasi3er,$ aplikasi$ Java akan$berkomunikasi$ dengan$database$melalu$

Pokok  Bahasan  

•  Pengantar  JDBC  •  Langkah  Penggunaan  JDBC  

Page 3: PengantarJDBC · • JDBC menyediakan$library$yang$digunakan$ untuk$mengakses$RDBMS$ ... • Pada$aplikasi3er,$ aplikasi$ Java akan$berkomunikasi$ dengan$database$melalu$

Pengantar  JDBC  

Page 4: PengantarJDBC · • JDBC menyediakan$library$yang$digunakan$ untuk$mengakses$RDBMS$ ... • Pada$aplikasi3er,$ aplikasi$ Java akan$berkomunikasi$ dengan$database$melalu$

JDBC  

•  Java  Data  Base  Conec;vity  •  JDBC  menyediakan  library  yang  digunakan  untuk  mengakses  RDBMS  

•  Class-­‐class  dari  JDBC  ada  di  dalam  paket  java.sql  

Page 5: PengantarJDBC · • JDBC menyediakan$library$yang$digunakan$ untuk$mengakses$RDBMS$ ... • Pada$aplikasi3er,$ aplikasi$ Java akan$berkomunikasi$ dengan$database$melalu$

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  

Page 6: PengantarJDBC · • JDBC menyediakan$library$yang$digunakan$ untuk$mengakses$RDBMS$ ... • Pada$aplikasi3er,$ aplikasi$ Java akan$berkomunikasi$ dengan$database$melalu$

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  

Page 7: PengantarJDBC · • JDBC menyediakan$library$yang$digunakan$ untuk$mengakses$RDBMS$ ... • Pada$aplikasi3er,$ aplikasi$ Java akan$berkomunikasi$ dengan$database$melalu$

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)  

Page 8: PengantarJDBC · • JDBC menyediakan$library$yang$digunakan$ untuk$mengakses$RDBMS$ ... • Pada$aplikasi3er,$ aplikasi$ Java akan$berkomunikasi$ dengan$database$melalu$

Langkah  Penggunaan  JDBC  

Page 9: PengantarJDBC · • JDBC menyediakan$library$yang$digunakan$ untuk$mengakses$RDBMS$ ... • Pada$aplikasi3er,$ aplikasi$ Java akan$berkomunikasi$ dengan$database$melalu$

Langkah  Penggunaan  JDBC  

•  Load  Driver  •  Definisikan  URL  untuk  koneksi  •  Buat  koneksi  •  Buat  objek  Statement  •  Eksekusi  query  •  Proses  hasil  eksekusi  query  •  Tutup  koneksi  

Page 10: PengantarJDBC · • JDBC menyediakan$library$yang$digunakan$ untuk$mengakses$RDBMS$ ... • Pada$aplikasi3er,$ aplikasi$ Java akan$berkomunikasi$ dengan$database$melalu$

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  

Page 11: PengantarJDBC · • JDBC menyediakan$library$yang$digunakan$ untuk$mengakses$RDBMS$ ... • Pada$aplikasi3er,$ aplikasi$ Java akan$berkomunikasi$ dengan$database$melalu$

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”  

:  

Page 12: PengantarJDBC · • JDBC menyediakan$library$yang$digunakan$ untuk$mengakses$RDBMS$ ... • Pada$aplikasi3er,$ aplikasi$ Java akan$berkomunikasi$ dengan$database$melalu$

Langkah  3:  Buat  koneksi  •  Cara  membuat  object  connec+on:  

•  [op;onal]  Jika  ingin  melihat  info  tentang  DBMS  yang  digunakan  

Page 13: PengantarJDBC · • JDBC menyediakan$library$yang$digunakan$ untuk$mengakses$RDBMS$ ... • Pada$aplikasi3er,$ aplikasi$ Java akan$berkomunikasi$ dengan$database$melalu$

Langkah  4:  Buat  Objek  Statement  

•  Objek  Statement  digunakan  untuk  mengirimkan  perintah  atau  query  yang  akan  dieksekusi  oleh  DBMS  

•  Beberapa  ;pe  Statement:  – Statement  – PreparedStatement  – CallableStatement  

Page 14: PengantarJDBC · • JDBC menyediakan$library$yang$digunakan$ untuk$mengakses$RDBMS$ ... • Pada$aplikasi3er,$ aplikasi$ Java akan$berkomunikasi$ dengan$database$melalu$

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:  

Page 15: PengantarJDBC · • JDBC menyediakan$library$yang$digunakan$ untuk$mengakses$RDBMS$ ... • Pada$aplikasi3er,$ aplikasi$ Java akan$berkomunikasi$ dengan$database$melalu$

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  

Page 16: PengantarJDBC · • JDBC menyediakan$library$yang$digunakan$ untuk$mengakses$RDBMS$ ... • Pada$aplikasi3er,$ aplikasi$ Java akan$berkomunikasi$ dengan$database$melalu$

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  

Page 17: PengantarJDBC · • JDBC menyediakan$library$yang$digunakan$ untuk$mengakses$RDBMS$ ... • Pada$aplikasi3er,$ aplikasi$ Java akan$berkomunikasi$ dengan$database$melalu$

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:  

Page 18: PengantarJDBC · • JDBC menyediakan$library$yang$digunakan$ untuk$mengakses$RDBMS$ ... • Pada$aplikasi3er,$ aplikasi$ Java akan$berkomunikasi$ dengan$database$melalu$

PreparedStatement  CallableStatement  

Page 19: PengantarJDBC · • JDBC menyediakan$library$yang$digunakan$ untuk$mengakses$RDBMS$ ... • Pada$aplikasi3er,$ aplikasi$ Java akan$berkomunikasi$ dengan$database$melalu$

•  Baik  PreparedStatement  maupun  CallableStatement  merupakan  bentuk  yang  lebih  khusus  dari  Statement  

Page 20: PengantarJDBC · • JDBC menyediakan$library$yang$digunakan$ untuk$mengakses$RDBMS$ ... • Pada$aplikasi3er,$ aplikasi$ Java akan$berkomunikasi$ dengan$database$melalu$

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  

Page 21: PengantarJDBC · • JDBC menyediakan$library$yang$digunakan$ untuk$mengakses$RDBMS$ ... • Pada$aplikasi3er,$ aplikasi$ Java akan$berkomunikasi$ dengan$database$melalu$

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

Page 22: PengantarJDBC · • JDBC menyediakan$library$yang$digunakan$ untuk$mengakses$RDBMS$ ... • Pada$aplikasi3er,$ aplikasi$ Java akan$berkomunikasi$ dengan$database$melalu$

Statement  vs  PreparedStatement  

•  Untuk  PreparedStatement,  ke;ka  pembuatan  objek  PreparedStatement,  sekaligus  diberikan  perintah  SQL.    

 PreparedStatement  pst  =  conn.prepareStatement(perintahQuery);  

Page 23: PengantarJDBC · • JDBC menyediakan$library$yang$digunakan$ untuk$mengakses$RDBMS$ ... • Pada$aplikasi3er,$ aplikasi$ Java akan$berkomunikasi$ dengan$database$melalu$

Contoh  Penggunaan  PreparedStatement  String  sql  =  “INSERT  INTO  tbCar  (idCar,name,prodYear,km)  VALUES  (?,?,?,?)”;  PreparedStatement  pst  =  conn.prepareStatement(sql);  pst.setString(1,”c01”  );  pst.setString(2,”Blazer”  );  pst.setInt(3,2000  );  pst.setInt(4,50000);  pst.executeUpdate();  //////////////////////////////  pst.setString(1,”c02”  );  pst.setString(2,”Audi”  );  pst.setInt(3,2010  );  pst.setInt(4,500);  pst.executeUpdate();    

Tempat  paremeter  

Mengisi/melewatkan  nilai  paremeter  

Page 24: PengantarJDBC · • JDBC menyediakan$library$yang$digunakan$ untuk$mengakses$RDBMS$ ... • Pada$aplikasi3er,$ aplikasi$ Java akan$berkomunikasi$ dengan$database$melalu$

CallableStatement  

•  Digunakan  untuk  pemanggilan  Stored  Procedure  yang  ada  dalam  database  

•  CallableStatement  juga  bisa  menerima  input  data  (parameter)  saat  run;me.    

Page 25: PengantarJDBC · • JDBC menyediakan$library$yang$digunakan$ untuk$mengakses$RDBMS$ ... • Pada$aplikasi3er,$ aplikasi$ Java akan$berkomunikasi$ dengan$database$melalu$

Contoh  CallableStatement  

DELIMITER  //    CREATE  PROCEDURE  proc()  BEGIN  

 SELECT  *  FROM  emp;  END;    DELIMITER  ;    

Page 26: PengantarJDBC · • JDBC menyediakan$library$yang$digunakan$ untuk$mengakses$RDBMS$ ... • Pada$aplikasi3er,$ aplikasi$ Java akan$berkomunikasi$ dengan$database$melalu$

Contoh  CallableStatement  CallableStatement  cstmt  =  conn.prepareCall(“{call  proc}”);  ResultSet  rs  =  cstmt.executeQuery();  …..dst…..  

Page 27: PengantarJDBC · • JDBC menyediakan$library$yang$digunakan$ untuk$mengakses$RDBMS$ ... • Pada$aplikasi3er,$ aplikasi$ Java akan$berkomunikasi$ dengan$database$melalu$

Fitur  lanjut  JDBC  

Page 28: PengantarJDBC · • JDBC menyediakan$library$yang$digunakan$ untuk$mengakses$RDBMS$ ... • Pada$aplikasi3er,$ aplikasi$ Java akan$berkomunikasi$ dengan$database$melalu$

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  

Page 29: PengantarJDBC · • JDBC menyediakan$library$yang$digunakan$ untuk$mengakses$RDBMS$ ... • Pada$aplikasi3er,$ aplikasi$ Java akan$berkomunikasi$ dengan$database$melalu$

Transac;ons:  Contoh  

Page 30: PengantarJDBC · • JDBC menyediakan$library$yang$digunakan$ untuk$mengakses$RDBMS$ ... • Pada$aplikasi3er,$ aplikasi$ Java akan$berkomunikasi$ dengan$database$melalu$

Contoh  Kasus  

Page 31: PengantarJDBC · • JDBC menyediakan$library$yang$digunakan$ untuk$mengakses$RDBMS$ ... • Pada$aplikasi3er,$ aplikasi$ Java akan$berkomunikasi$ dengan$database$melalu$

1.  Buat  Database  di  MySQL  

•  Buat  database  RentCarDB    create  database  RentCarDB;  

Page 32: PengantarJDBC · • JDBC menyediakan$library$yang$digunakan$ untuk$mengakses$RDBMS$ ... • Pada$aplikasi3er,$ aplikasi$ Java akan$berkomunikasi$ dengan$database$melalu$

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

Page 33: PengantarJDBC · • JDBC menyediakan$library$yang$digunakan$ untuk$mengakses$RDBMS$ ... • Pada$aplikasi3er,$ aplikasi$ Java akan$berkomunikasi$ dengan$database$melalu$

3.  Buat  JFrame  Form  

•  Buat  window  dengan  menggunakan  JFrame  Form  dengan  nama  RentCarForm  

•  Berikan  +tle  berupa  Rent  Car  Form  

Page 34: PengantarJDBC · • JDBC menyediakan$library$yang$digunakan$ untuk$mengakses$RDBMS$ ... • Pada$aplikasi3er,$ aplikasi$ Java akan$berkomunikasi$ dengan$database$melalu$

4.  Buat  Form  Input  Data  

Page 35: PengantarJDBC · • JDBC menyediakan$library$yang$digunakan$ untuk$mengakses$RDBMS$ ... • Pada$aplikasi3er,$ aplikasi$ Java akan$berkomunikasi$ dengan$database$melalu$

5.  Buat  Form  Browse  Data  

Page 36: PengantarJDBC · • JDBC menyediakan$library$yang$digunakan$ untuk$mengakses$RDBMS$ ... • Pada$aplikasi3er,$ aplikasi$ Java akan$berkomunikasi$ dengan$database$melalu$

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.  

Page 37: PengantarJDBC · • JDBC menyediakan$library$yang$digunakan$ untuk$mengakses$RDBMS$ ... • Pada$aplikasi3er,$ aplikasi$ Java akan$berkomunikasi$ dengan$database$melalu$

7.  Tambahkan  Library  MySQL  JDBC  Driver  ke  Project  •  Klik  kanan  pada  Libraries,  dan  pilih  Add  Library  

•  PilihMySQL  JDBC            Driver  

Page 38: PengantarJDBC · • JDBC menyediakan$library$yang$digunakan$ untuk$mengakses$RDBMS$ ... • Pada$aplikasi3er,$ aplikasi$ Java akan$berkomunikasi$ dengan$database$melalu$

8.  Inisialisasi  Koneksi  ke  DB  

•  Lakukan  di  dalam  konstruktor  

Page 39: PengantarJDBC · • JDBC menyediakan$library$yang$digunakan$ untuk$mengakses$RDBMS$ ... • Pada$aplikasi3er,$ aplikasi$ Java akan$berkomunikasi$ dengan$database$melalu$
Page 40: PengantarJDBC · • JDBC menyediakan$library$yang$digunakan$ untuk$mengakses$RDBMS$ ... • Pada$aplikasi3er,$ aplikasi$ Java akan$berkomunikasi$ dengan$database$melalu$

9.  Buat  Operasi  Insert  

•  Double  klik  tombol  Submit  

Page 41: PengantarJDBC · • JDBC menyediakan$library$yang$digunakan$ untuk$mengakses$RDBMS$ ... • Pada$aplikasi3er,$ aplikasi$ Java akan$berkomunikasi$ dengan$database$melalu$

10.  Buat  Operasi  Browse    •  Double  klik  tombol  Browse  

Page 42: PengantarJDBC · • JDBC menyediakan$library$yang$digunakan$ untuk$mengakses$RDBMS$ ... • Pada$aplikasi3er,$ aplikasi$ Java akan$berkomunikasi$ dengan$database$melalu$

Your  Turn  ….  

•  Buat  Event  Handler  untuk  tombol  Reset  dan  Delete  

Page 43: PengantarJDBC · • JDBC menyediakan$library$yang$digunakan$ untuk$mengakses$RDBMS$ ... • Pada$aplikasi3er,$ aplikasi$ Java akan$berkomunikasi$ dengan$database$melalu$

END