BAB 5 Koneksi Database : SQL dan JDBC - Koneksi Database.pdf

  5 .1 Pe n ge n a la n

  Perint ah – perint ah dalam lingkungan dat abases adalah :

  5 .1 .1 SELECT

  Pernyat aan SELECT digunakan unt uk query dat abase t ent ang inform asi dat abase yang m ana yang dit am pilkan sebagai dat a. Form at da sa r dari pernyat aan SELECT adalah : SELECT kolom FROM namatabel where kondisi

  Pernyat aan SQL SELECT dim ulai dengan kat a kunci SELECT, diikut i oleh t anda kom a dari kolom - kolom yang akan dit am pilkan, kem udian clause FORM yang m enent ukan t abel yang berisi dat a yang akan dit am pilkan. Secara bebas, clause WHERE dapat dit am bahkan pada pernyat aan SELECT, m enj elaskan sebuah set dari kondisi yang harus dit em ukan oleh dat a yang akan dikem balikan oleh dat abase. Clause WHERE t idak dipisahkan oleh kom a; m elainkan, dia t ehubung oleh pernyat aan AND at au OR yang fungsinya sam a dengan logik m ereka. Menet apkan * sebagai nam a kolom m em ber it ahu dat abase server unt uk m eret rieve sem ua kolom yang t ersedia didalam t abel.

  Cont oh, j ika kit a ingin m eret rieve sem ua dat a yang t erdapat pada t able yang bernam a users : SELECT * from users;

  Jika kit a hanya ingin m elihat unt uk users yang bernam a belakang Sm it h, pernyat aan SQL- nya berupa: SELECT * from users where nama ='Smith'; SQL t idak bersifat case- sensit ive pada kat a kuncinya, SQL case- sensit ive pada nilainya. Pernyat aan berikut ini akan m enghasilkan dat a yang berbeda j ika dibandingkan dengan pernyat aan diat as:

  SELECT * from users where nama ='sMith'; Operat or lain yang dapat digunakan pada condit ional st at em ent s:

  • < - kurang dari
  • < = - kurang dari at au sam a dengan
  • > - lebih besar dari
  • >> = - lebih besar dari at au sam a de
  • like – sam a dengan

  5 .1 .2 I N SERT

  Pernyat aan I NSERT digunakan unt uk m em asukkan baris dat a yang baru dari inform asi t abel dat abase yang akt if. St rukt ur dasar dari pernyat aan I NSERT adalah :

  INSERT INTO nama-tabel VALUES(nilai1, nilai2, ...) Dim ana nam a- t abel adalah nam a dari t abel yang akan berisi baris dat a yang baru. Param et er yang diberikan didalam kat a kunci VALUES adalah daft ar dat a dari nilai yang akan dit am bahkan kedalam t abel. Jika sepert i ini dim ana hanya t abel yang dit et apkan, SQL akan m em asukkan nilai yang diberikan pada pernyat aan dengan field didalam dat abase berdasarkan nilai yang dipesan dan field yang dit ent ukan pada t abel dat abase. Jika, sebagai cont oh, kit a m em punyai t abel dengan nam a users, dengan field userid, nam a, alam at ( pada pem esanan) , pada baris berikut ini akan m enam bahkan dat a yang baru ke t abel:

  INSERT INTO users VALUES(199700651, 'Jeni Master', 'UP Ayala Technopark');

  Pent ing unt uk diingat bahwa sem ua panggilan unt uk I NSERT harus diikut i at uran int egrit as pada t abel dat a. Oleh karena it u, j ika sebuah field pada dat abase dit et apkan non- null, berbagai usaha unt uk m em asukkan ni; ai- null kedalam field t ersebut akan m enyebabkan error pada dat abase.

  5 .1 .3 UPD ATE

  Pernyat aan UPDATE akan m engupdat e baris yang dipilih pada t abel, sebagai lawan dari pernyat aan I NSERT yang m enam bahkan baris dat a baru. Form at dasar pernyat aan UPDATE adalah:

  UPDATE nama-tabel set nilai-kolom WHERE kondisi Dim ana nam a- t abel adalah nam a dari t abel yang berisi baris yang akan diupdat e, dan nilai- kolom adalah daft ar dat a dar i nam a kolom dan nilainya. Secara bebas, daft ar dat a dari kondisi dapat dit am bahkan secara spesifik dengan baris yang akan dim odofikasi pada t abel. Jika t idak diber kondisi, m aka updat e dat a akan dilakukan pada t iap- t iap baris didalam t abel yang dit ent ukan.

  Berbagai updat e harus disesuaikan dengan at uran int egrit as pada dat abase. Sebagai cont oh, m enyet t ing nilai null pada kolom yang sudah dit et apkan dengan nilai NOT NULL akan m enyebabkan pernyat aan t idak akan dij alankan dan t erdapat pesan error pada relasi dat abase.

  5 .1 .4 D ELETE Pernyat aan DELETE m enghapus baris dat a pada t abel yang dipilih.

  St rukt ur dasar dari pernyat aan DELETE adalah : DELETE FROM nama-tabel WHERE kondisi

  Dim ana nam a- t abel adalah nam a dari t abel y ang berisi baris dat a yang akan dihapus. Daft ar dat a dari kondisi secara bebas dapat dispesifikasik an sebaik m ungkin. Jika t idak diberi kondisi, m ak a pernyat aan akan m neghapus sem ua baris dat a pada t abel yang t elah dit ent ukan.

  5 .2 JD BC

  Java m enyediakan st andard API unt uk m engakses dat abase yang disebut Java Dat abase Connect ivit y ( JDBC) API . Dengan m enggunakan ini, para pengem bang m em ungkinkan dapat m engakses dat abase t anpa m em perdulikan vendornya; para vendor m enyediakan im plem ent asi unt uk abst ract int erfaces yang dij elaskan didalam API , penyediaan t ersebut sam a dengan set dari kem am puan koneksi unt uk para pengem bang.

  Berikut ini m erupakan class kunci dari JDBC API , sem uanya akan dij elask an secara det ail kem udian :

  • j ava.sql.Connect ion – m em buat sebuah koneksi dengan dat abase. Secara abst rak m em berikan det ail dari bagaim ana cara unt uk berkom unikasi dengan dat abase server.
  • >j ava.sql.DriverManager – m engat ur JDBC driver yang digunakan oleh aplik asi. Pada hubungannya dengan proper driv er URL dan proper aut hent icat ion, dapat m enyediakan aplikasi dengan valid inst ances dari obj ect kone
  • j avax.sql.Dat aSource – m em isahakan det ail ( URL, aut hent icat ion det ails) dari bagaim ana
  • j ava.sql.St at em ent – m enyediakan m et hod unt uk para pengem bang dalam m engeksekusi pernyat aan SQL.
  • j ava.sql.Result Set – m enyediakan hasil dar i sebuah pernyat aan SQL. Obj ect s ini ser ing dikem balikan dari m et hod yang t erlet ak pada St at em ent obj ect .
  • >Pert am a, JDBC driver harus diregist rasi dengan DriverManager. Hal ini dapat dikerj akan dengan m enggunakan m et hod Class.forNam e unt uk m enge- load driver's class definit ion kedalam m em
  • Kedua, m enggunakan m et hod get Connect ion pada DriverManagerm unt uk m enyediakan
Dibawah ini adalah cont oh dari bagaim ana m endapat kan koneksi dari dat abase Post greSQL. Sekali lagi, URL dan driver t epat unt uk im plem ent asi dat abase yang digunakan. Unt uk dat abase yang lain, periksalah dokum en yang disediakan.

  unt uk m em peroleh sebuah koneksi ke dat abase. Merupakan m et hod t erbaru dan yang lebih disukai dari obt aining Connect ion obj ect s.

  5 .2 .1 j a va .sql.D r ive r M a na ge r

  Dengan m enggunakan class ini, pengem bang dapat m eret rieve sebuah Connect ion obj ect yang kem udian dapat dia gunakan unt uk m elakukan akt ifit as dat abase. Berikut ini dua langkah yang dianj urkan:

  JDBC URL, sebaik usernam e dan password supplying unt uk akses dat abase. URL harus m engikut i synt ax yang dianj urkan oleh im plem ent asi dat abase t ert ent u.

  String jdbcURL = "jdbc:postgresql://localhost:5432/jeni-db"; String user = "jeni"; String password = "j3n1master"; Connection conn = null; try { Class.forName("org.postgresql.Driver"); conn = DriverManager.getConnection(url, user, password); ... } catch (SQLException e) { // perform error handling here }

  Saat ini m erupakan cara yang valid dari m eret rieve sebuah Connect ion obj ect , m et hod ini m enganj urkan para pengem bang unt uk t et ap m engikut i m et hod t ersebut dari sepert i det ail sebagai driver class nam e, URL dianj urkan unt uk akses ke dat abase, sedangkan usernam e dan password t epat unt uk penggunaan dat abase. Det ail- det ail ini paling banyak dipakai pada berbagai aplikasi. Dan j uga, m engat ur URL dan driver nam e pada kode m em buat nya lebih sulit unt uk aplikasi dalam m enukar im plem ent asi dat abase, j ika hal it u diperlukan.

  5 .2 .2 j a va x .sql.D a t a Sou r ce

  Dat aSource m erupakan int erface yang digam barkan pada JDBC API sej ak versi 2 dari spesifikasinya. Sekarang saat nya direkom endasikan unt uk para pengem bang dalam m endapat kan Connect ion obj ect . Ret rieval dari Connect ion obj ect t erj adi secara langsung : cara sederhana m em anggil m et hod get Connect ion( ) dalam kej adian yang valid dari Dat aSource. Hal t ersebut m em peroleh sebuah kej adian dari Dat aSource yang sekarang dapat m enyelesaikan sebuah m asalah unt uk beberapa pengem bang( developer) .

  Sej ak Dat aSource m erupakan sebuah int erface, sebuah inst ance t idak dapat dibuat oleh pengem bang dengan m enggunakan operat or yang baru secara sederhana. Hal t ersebut direkom endasikan j ika kit a m em ilih aplikasi server dengan m enggunakan at uran pem buat an dari Dat aSource obj ect s unt uk kit a.

  5 .2 .3 Konfigu r a si D a t a Sou r ce pa da Sun Applica t ion Se r v e r 8 .1

  Masing- m asing server m em iliki prosedurnya sendiri unt uk m engonfigurasi dan m engat ur Dat aSources. Apa yang akan kit a bahas akan m enj adi prosedur unt uk m elakukan sesuat u dalam cont ainer yang t elah gunakan sej auh ini unt uk cont oh kit a yait u : Sun Applicat ion Server 8.1.

  3 langkah dalam m enyet t ing dat asource unt uk AppServer 8.1 :

  • Mendaft arkan file JAR yang berisi JDBC driver dengan cont ai
  • Mem buat connect ion pool ke dat abase • Mendaft arkan sebuah dat asource yang digunakan unt uk connect ion pool.

  5 .2 .4 M e n da ft a r k a n file JAR

  Langkah pert am a akan m engakses console adm in unt uk server. Sebagai default , console adm in dapat diakses dengan m enggunakan URL berikut ini pada address bar browser :

  

  Pada kasus nom er port berbeda yang t elah dikonfigurasi sebelum nya unt uk console adm in Anda selam a wakt u m enginst al, dengan m udah gant ilah 4848 dengan nom er port yang ada. Set elah m enyediakan securit y credent ials dibut uhkan unt uk m engakses console, akan t am pil sebuah layar sepert i gam bar berikut ini: Unt uk m em proses, klik pada Applica t ion Se r v e r pada pane sebelah kiri, lalu klik pada t ab JVM set t ings t ab pada pane sebelah kanan.

  Kem udian pada layar berikut nya, pilih t ab Pat h Set t ings pada pane sebelah kanan. akan t am pil sebuah layar sepert i gam bar berikut ini.

  Scroll kebawah sam pai anda m enem ukan t ext area yang berlabel Classpat h suffix. Masukkan pat h leading kedalam file JAR yang berisi JDBC drivers.

  5 .2 .5 M e m bu a t se bua h conn e ct ion pool

  Unt uk m em buat sebuah connect ion pool, klik pada link JDBC pada pane sebelah kiri, kem udian klik Connect ion Pools pada pane sebelah kanan. Kem udian pada layar berikut nya, klik pada t om bol New ... unt uk m enam pilkan layar sepert i pada gam bar dibawah ini : Dibaw ah field Nam e, isilah nam a yang m ana connect ion pool ini akan dit unj uk. Dibaw ah connect ion pool drop kebawah, pilih j avax.sql.Dat aSource. Tinggalkan Dat abase Vendor yang pilihannya kosong, karena Post greSQL t idak t erm asuk dalam list vendor. Klik next , kem udian j ika dim int a unt uk nam a class prom pt ed, m asukkan: org.post gresql.j dbc3.Jdbc3PoolingDat aSource. klik next . Pada layar berikut nya, scroll kebaw ah sam pai Anda m elihat propert i yang akan diasosiasikan dengan connect ion pool ini: aram et er- param et er berikut ini harus m em punyai nilai- nilai yang t elah disediakan:

  • Password •

  ServerNam e

  P

  • Port Num
  • Dat abaseNam e
  • User Set elah m enyediakan nilai dar i sem ua param et er diat as, klik Finish.

  5 .2 .6 M e n da ft a r k a n D a t a Sou r ce

  Unt uk m endaft arkan dat asource, klik pada link JDBC yang dit em ukan pda pane sebelah k iri, lalu klik pada JDBC Resources. Pada layar berikut nya klik pada New ... Field harus diisi dengan ket ent uan sebagai berikut :

  • JNDI Nam e – m asukkan logical nam e yang m ana aplik asi akan m e- ret rieve Dat aSource. Direkom endasikan bahw a nam anya m em ilik i j dbc/ sebagai prefix- nya, agar lebih m udah bagi server adm inist rat ors pada m asa selanj ut nya dalam m engident ifikasi elem ent ini sebagai JDBC resou
  • Pool nam e – pilih nam a dari connect ion pool yang t elah dibuat t erlebih dahulu.
  • Descript ion – Masukkan t ext yang m enj elaskan t ent ang Dat aSource ( bebas) klik pada OK unt uk m engakhiri.

  5 .2 .7 Re t r ie vin g D a t a Sou r ce

  Ret rieving m erupakan sebuah inst ance Dat aSource dari sebuah aplikasi server yang sederhana dan dapat dipenuhi hanya dengan m enggunakan beberapa baris dari kode m enggunakan bagian dari JNDI API . Java Nam ing Direct ory I nt erface ( JNDI ) adalah st andard Java API unt uk m engakses direct ories. Sebuah direkt ori m erupakan lokasi pusat dim ana aplikasi Java dapat ret rieve ex t ernal resources m enggunakan logical nam e.

  Det ail t am bahan unt uk JNDI dan bagaim ana dia beker j a m erupakan lingkup lain pada bahasan ini. Hal yang perlu kit a t ahu adalah bahwa server aplikasi m em elihara sebuah direkt ori yang m ana akan m enerbit kan Dat aSource yang t elah kit a konfigurasi. Kem udian, aplikasi kit a dapat m elakukan lookpup sederhana sebuah nam a pada direkt ori t ersebut unt uk m eret rieve resource.

  Unt uk t uj uan kit a , sudah cukup bagi kit a unt uk m em buat sebuah cont ext JNDI m enggunakan default const ruct or.Co nt ext JNDI ini m em isahkan det ail dari pengkoneksian direkt ori, m em buat resource lookup sem udah m em anggil sebuah m et hod single. I ngat lah bahw a nam a yang dig un kan unt uk looku a p resource harus sam a dengan nam a yang digunakan pada konfigurasi Dat aS urce. o ...

  Context ctxt = null; DataSource ds = null; try { // membuat sebuah instance dari JNDI context yang mana akan melakukan lookup ctxt = new InitialContext(); // retrieve DataSource dari direktori menggunakan logical name ds = (DataSource)ctxt.lookup("jdbc/PostgreSQLDS"); } catch (NamingException ne) { System.err("Specified DataSource cannot be found"); } Sekali kit a m em punyai valid Dat aSource inst ance, m endapat kan sebuah Connect ion obj ect adalah se m udah : Connection conn = ds.getConnection();

  5 .2 .8 j a va .sql.Con n e ct ion / j a va .sql.St a t e m e n t

  j ava sq . l.Connect ion obj ect s m enghadirkan connect ions yang nyat a ke dat abase. Sekal i kit a m e m p nyai sebuah inst ance dari obj ect ini, kit a dapat m em buat sebuah inst ance d u ari sebuah S t a t e m ent obj ect , dim ana kem udian kit a dapat m enggunakan query SQL.

  St at em ent obj ect m enyediakan beberapa m et hod unt uk m engeksekusi query SQL. Dua m et hod y ang sering digunakan adalah:

  • execut eQuery – m enggunakan pernyat aan SELECT dan m engem balikan hasil dari operasi sebagai Result Set obj ect .
  • execut eUpdat e – m enggunakan ernya p t aan I NSERT, UPDATE, at au DELETE dan m engem balikan j um lah dari baris yang diperngaruhi sebagai int eger prim it ive.

  Dibawah ini adalah bagian dari cont oh kode out lining prosedur, bersam a dengan beberapa error yang sangat dasar – m enangani prosedur.

  Context ctxt = null; DataSource ds = null; Connection conn = null; Statement stmt = null; ResultSet rs = null; try { ctxt = new InitialContext(); ds = (DataSource)ctxt.lookup("jdbc/PostgreSQLDS"); conn = ds.getConnection(); stmt = conn.createStatement(); rs = stmt.executeQuery("SELECT * FROM users"); } catch (NamingException e) { System.err("Cannot find named datasource"); } catch (SQLException se) { System.err("Error occurred while performing query"); }

  5 .2 .9 j a va .sql.Re su lt Se t

  Sebuah Result Set obj ect encapsulat es m erupakan hasil dari sebuah query ke dat abase. Dat a didalam Result Set obj ect dapa t divisualisasikan sebagai t abel.kem udian inform asinya dapat d iret rieve sat u baris pada saat it u j uga, dengan Result Set obj ect m enj aga proses t et ap pada baris y ang dit ent ukan.

  Unt uk it erasi diat as baris yang diarahkan pada Result Set , t elah disediakan m et hod yang disebut n ext ( ) . Mem anggil m et hod next ( ) m em indahkan int ernal poin t er m enj aga Result Set obj ect ke point baris berikut nya. Met hod ini m engem balikan nilai t r ue j ika dit em ukan baris berikut nya, dan nilai false j ika t idak ada baris berikut nya. while (rs.next()) { //membaca data dari baris sebelum disini Con to dari iterasi ResultSet h } U nt uk m eret rieve dat a dari t iap- t iad baris, Result Set obj ect m enyediakan beberapa get m et hod.

  Yait u sebuah m et hod get St ring unt uk m eret rieve dat a sebagai St ring, m et hod get I nt unt uk m eret rieve dat a int eger, m et hod get Boolean unt uk m eret rieve dat a boolean, dll. Dalam berbagai k asus, m et hod- m et hod ini j uga m enerim a sebagai para m et er nom er kolom dari kolom yang berisi dat a, at au nam a kolo m .

  Context ctxt = null; DataSource ds = null; Connection conn = null; Statement stmt = null; ResultSet rs = null; try { ctxt = new InitialContext(); ds = (DataSource)ctxt.lookup("jdbc/PostgreSQLDS"); conn = ds.getConnection(); stmt = conn.createStatement(); rs = stmt.executeQuery("SELECT * FROM users"); while (rs.next()) { String userName = rs.getString("name"); String address = rs.getString("address"); int userID = rs.getInt("userid"); // perform operations on retrieved data here. } } catch (NamingException e) { System.err("Cannot find named datasource"); } catch (SQLException se) { System.err("Error occurred while performing query"); } Ringkasan pada operasi dat abase :

  • Mem peroleh sebuah Conne ct ion obj ect baik m enggunakan DriverManager at au m em perolehnya dari Dat aSource obj ect ( disaranka
  • • Mem buat sebuah St at em ent obj ect m enggunakan m et hod creat eSt at em ent ( ) yang t ersedia

    pada Connect ion obj ect .
  • Melakukan query SQl m enggunakan St at em ent obj ect dan ret rieve result s.
  • Jika hasil da ri query adalah sebuah Result Set obj ect , it erasi diat as baris dengan m em anggil m et hod berikut nya secara berulang- ulang ket ike m eret riev e dat a di set iap baris.
  • Menut up sem ua dat abaseyang berhubungan dengan obj ect .