Java Database Connectivity (JDBC) 1

Java Database Connectivity (JDBC) 1
paly

"Sumber Core Web Programming" is a book written by Marty Hall and Larry Brown which includes a slide by Riyanto Sigit on Java Database Connectivity (JDBC) 1

About Java Database Connectivity (JDBC) 1

PowerPoint presentation about 'Java Database Connectivity (JDBC) 1'. This presentation describes the topic on "Sumber Core Web Programming" is a book written by Marty Hall and Larry Brown which includes a slide by Riyanto Sigit on Java Database Connectivity (JDBC) 1. The key topics included in this slideshow are . Download this presentation absolutely free.

Presentation Transcript


Slide1Sumber: Core WebProgramming Pengarang : Marty Hall – Larry Brown  Slide  : Riyanto Sigit Java Database Connectivity (JDBC-1) Java Database Connectivity (JDBC-1)

Slide2JDBC• JDBC adalah Application Programming Interface (API) yang dirancang untuk mengakses database universal berdasarkan SQL. • JDBC terdiri atas JDBC 1.0 API yang memberika fungsi-fungsi dasar untuk akses data. JDBC 2.0 API memberikan tambahan ke fungsi-fungsi dasar dengan kelebihan- kelebihan lain yang lebih mutakhir.

Slide3JDBC API• JDBC adalah suatu nama trade mark, bukan sebuah singkatan. Tapi JDBC sering dikira singkatan dari Java Database Connectivity. JDBC API terdiri dari sejumlah class dan interface yang ditulis dalam bahasa Java yang menyediakan API standar sebagai alat bantu bagi pembuat program dan memberikan kemungkinan untuk menulis aplikasi database dengan menggunakan semua Java API. • JDBC API memudahkan untuk mengirim statement SQL ke sistem database relasional dan mendukung bermacam-macam bahasa SQL. Keunggulan JDBC API adalah sebuah aplikasi dapat mengakses sembarang sumber data dan dapat berjalan pada sembarang platform yang mempunyai Java Virtual Machine(JVM) • Sehingga kita tidak perlu menulis satu program untuk mengakses database Sybase, Oracle atau Access dan lain-lain. Kita cukup menulis satu program yang menggunakan JDBC API, dan program dapat mengirimkan statement SQL atau statement lain ke sumber data tertentu. Dengan aplikasi yang ditulis dalam bahasa Java seseorang tidak perlu khawatir untuk menulis aplikasi yang berbeda-beda agar dapat berjalan pada platform yang berbeda-beda.

Slide4Apa yang dilakukan JDBC?• Membangun sebuah koneksi ke sumber data (data source). • Mengirim statement ke sumber data. • Memproses hasil dari statement tersebut

Slide5Model 2-tier dan 3-tier• Untuk akses database, JDBC API mendukung baik model 2-tier maupun 3- tier. • Untuk model 2-tier, sebuah applet atau aplikasi java berbicara langsung ke database. Dalam hal ini diperlukan JDBC driver yang dapat berkomunikasi ke sumber data tersebut. Sebuah perintah atau statement dari user dikirim ke database dan hasil dari statement dikirim balik ke user. Database dapat terletak pada mesin yang sama atau berbeda dengan klien, yang disambungkan dengan jaringan. Jika letak database berbeda dengan mesin klien maka disebut dengan client/server. Mesin user disebut dengan client dan mesin dimana database berada disebut dengan server. Jaringan ini bisa berupa LAN atau internet. • Dalam model 3-tier, user mengirimkan perintah ke sebuah middle tier. Selanjutnya middle tier mengirimkan perintah tersebut ke database. Database memproses perintah tersebut dan mengirim balik hasilnya ke middle tier. Kemudian middle tier mengirimkannya ke user. Keuntungan model 3-tier ini adalah mempermudah aplikasi untuk dideploy dan meningkatkan performansi.

Slide6Tipe-tipe Driver JDBC• JDBC-ODBC Bridge plus ODBC Driver Kombinasi ini menghasilkan akses JDBC melalui driver ODBC. Menjembatani antara aplikasi Java dengan Microsoft ODBC. Tipe driver ini paling cocok untuk jaringan korporat dimana instalasi klien bukan masalah besar, atau untuk aplikasi server yang ditulis dalam bahasa Java dalam arsitertur 3-tier. • Native API party Java technology-enabled driver Tipe driver ini mengkonversi JDBC call ke dalam client API untyk Oracle, Sybase, Informix, DB2, dan DBMS yang lain. Tipe ini memerlukan kode binary yang spesifik terhadap sistem operasi yang di-load kedalam masing- masing klien. • Pure Java Driver for Database Middleware (JDBC-Net). Model driver ini menerjemahkan JDBC call kedalam protokol middleware vendor, yang kemudian diterjemahkan ke protokol DBMS oleh server middleware. Middleware menyediakan konektifitas ke berbagai jenis database yang berbeda. • Native-protocol Pure Java Driver Model driver ini mengkonversi JDBC call langsung kedalam protokol network yang digunakan oleh DBMS, mengijinkan direct call dari mesin klien ke server DBMS dan memberikan solusi praktis untuk akses internet.

Slide8Tipe data JDBC

Slide9Langkah-langkahmenggunakan JDBC • Load driver • Mendefinisikan koneksi URL • Membuat koneksi • Membuat obyek statement • Mengeksekusi query • Memproses result • Menutup koneksi

Slide10Load driver• Untuk mengaktifkan hubungan antar aplikasi dan database, maka sebuah Connection harus debentuk dengan menggunakan JDBC Driver. Connection dibentuk melalui satu class java.sql.DriverManager dan dua interface, yaitu java.sql.Driver dan java.sql.Connection. Class untuk JDBC diakses melalui java.sql.*. Driver adalah software yang menangani  komunikasi ke database server. Berikut ini adalah  contoh program jika yang kita gunakan adalah JDBC-ODBC driver. try { Class.forName(“sun.jdbc.odbc.JdbcDriver”); } catch (ClassNotFoundException ex) { System.err.println(“Driver Error”); ex.printStackTrace(); System.exit(1); }

Slide11Load driver• Penggunaan Class akan throw ClassNotFoundException.  Dokumentasi driver anda akan memberikan nama class yang digunakan. Contoh : • Oracle : Class.forName(“oracle.jdbc.OracleDriver”); • Sybase: Class.forName(“com.sybase.jdbc.SybDriver”);

Slide12Mendefinisikan koneksi URL• Menspesifikasikan lokasi database server. Untuk mendefinisikan URL kita bisa menggunakan dokumentasi driver. Untuk penggunaan JDBC di applet maka database server harus berada pada node yang sama dengan letak applet dan menggunakan proxy server yang me “reroute” request database ke actual server. Berikut ini contoh mendefinisikan url:

Slide13Membuat koneksi• Membuat koneksi bisa dilakukan dengan cara  memanggil method getConnection() dari DriverManager dengan melewatkan URL sebagai argumen. Method getConnection() akan melempar SQLException. • Contoh:

Slide14Membuat koneksi• Akses ke Driver dan DriverMAnager dapat menyebabkan Exception yang harus dikendalikan oleh program. Misal: try{   … … } catch(ClassNotFoundException ex) {      System.err.println("Driver Error");      ex.printStackTrace();      System.exit(1); } catch(SQLException ex) {      System.err.println("Tidak Berhasil Koneksi dengan Northwind");      System.exit(1); }

Slide15Membuat obyek statement• Obyek Statement digunakan untuk mengirim query dan perintah ke database. Obyek statement dibuat dengan cara bekerjasama dengan class Connection. Untuk membuat obyek Statement maka kita harus memangil method createStatement() dari Connection. • Contoh: Statement statement = connection.createStatement();

Slide16Mengeksekusi query• Untuk mengeksekusi query kita bisa m emanfaatkan objek Statement untuk memproses hasil query. Caranya adalah dengan memanggil method executeQuery() dari objek Statement. Method executeQuery() akan mengembalikan nilai yang bertipe ResulSet. • Contoh:   String sql=“select col1, col2, col3 from sometable”;   ResultSet rs= statement.executeQuery(sql); • Untuk memodifikasi database, gunakan   statement.executeUpdate(sql); yang mendukung   string sql UPDATE, INSERT INTO, DELETE

Slide17Memproses result• Untuk memproses result kita bisa  menggunakan method next() pada objek ResultSet untuk mendapatkan result per satu baris. Selama data masih ada method  next() akan mengembalikan nilai true dan jika sudah tidak ada akan mengembalikan nilai false. • Contoh: String nrp; String nama;      while ( rs.next ()){         nrp=rs. getString (1);          nama=rs. getString (2);         System.out.println("NRP : " +nrp);         System.out.println("NAMA : " +nama);         System.out.println("-------------");       }

Slide18Memproses result• Kolom pertama mempunyai index 1 bukan 0. Objek ResultSet otomatis akan ditutup bila ada objek ResultSet baru. ResultSet memberikan bermacam- macam method getXxx() dengan parameter indek kolom atau nama kolom dan mengembalikan data. Beberapa method yang ada pada ResultSet adalah sebagai berikut: – findColumn() untuk mendapatkan index (integer value) berdasarkan nama kolom. – getMetaData() untuk meretrieve informasi mengenai ResultSet, returns object ResultSetMetaData. – wasNull() untuk mengetahui apakah getXxx() menghasilkan SQL null.

Slide19Menutup koneksi• Karena membuka koneksi adalah mahal, maka penundaan langkah terakhir ini hanya jika masih ada operasi database yang dilakukan. • Deklarasi untuk menutup koneksi harus didefinisikan secara eksplisit dengan cara sebagai berikut: connection.close ();

Slide20Membuat Data Source• Berikut ini adalah langkah-langkah untuk mengakses tabel yang tersimpan pada database Acces dengan menggunakan ODBC

Slide21Click Start, Settings, Control Panel, Administrative Tools, Data Sources(ODBC), System DSN, dan pilih Add

Slide22Memilih driver Microsoft Access, Finish, ketikkan nama Data Source Name dan tekan Select untuk memilih nama dan lokasi database

Slide23Navigasi pada directory msoffice, pilih Northwind.mdb, tekan OK dan lanjutkan tekan OK pada window

Slide24Program• Gunakan sun.jdbc.JdbcOdbcDriver sebagai nama class dari JDBC driver     Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); • Gunakan “jdbc:odbc:Northwind” sebagai alamat database, dan gunakan empty string pada username dan password Connection con=DriverManager.getConnection(jdbc:odbc:Northwind,””,””);

Slide25Percobaan 1• Program yang mengakses dan menampilkan semua data pada kolom kedua dan ketiga pada tabel Employees pada database Northwind.mdb. Pada program ini database tidak berubah, karena hanya melakukan select query. • Buatlah juga data source untuk database Northwind.mdb

Slide26import java.sql.*;public class NorthWind {    private Connection con;    NorthWind(){       con=null;    }    public ResultSet dbOpen() {       String dbname="jdbc:odbc:Northwind";       try {          Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");          con=DriverManager.getConnection(dbname,"","");          if (con==null)             System.err.println("Koneksi ke Database gagal");          else             System.err.println("Koneksi ke Database Berhasil");       }catch(ClassNotFoundException ex) {          System.err.println("Driver Error");          ex.printStackTrace();          System.exit(1);       }catch(SQLException ex) {          System.err.println("Tidak Berhasil Koneksi dengan Northwind");          System.exit(1);       }               ResultSet rs=null;       Statement st;       try {          System.out.println("Employees\n" + "===========");          st=con.createStatement();          rs=st.executeQuery("SELECT * FROM employees");       }catch(SQLException ex){          ex.printStackTrace();       }       return(rs);   }  

Slide27   public void showemployee (resultset rs) throws SQLException {      ResultSetMetaData rsData = rs.getMetaData();       String kolom3 = rsData.getColumnName(3);       String kolom2 = rsData.getColumnName(2);       while (rs.next()){         System.out.print(rs.getString(kolom3)+" ");         System.out.println(rs.getString(kolom2)+" ");       }    }    public void dbClose(){       try {          con.close();       }       catch(SQLException sqlex){          System.err.println("Error :Koneksi Database tidak Bisa diputus");       }    }    public static void main(String argv[]) throws Exception {       NorthWind app=new NorthWind();       ResultSet rs;       rs=app.dbOpen();       app.showEmployee(rs);       app.dbClose();    } }

Slide28Percobaan 2• Program yang melakukan insert yang berarti melakukan update data dan menampilkan data pada database. Pada contoh ini digunakan method executeUpdate() untuk mengupdate database.

Slide29import java.sql.*;public class Insert {     private Connection con;     Insert(){         con=null;     }     public void dbOpen() {        String dbname="jdbc:odbc:Northwind";        try {           Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");           con=DriverManager.getConnection(dbname,"","");           if (con==null)              System.err.println("Koneksi ke Database gagal");           else              System.err.println("Koneksi ke Database Berhasil");        }catch(ClassNotFoundException ex) {           System.err.println("Driver Error");           ex.printStackTrace();           System.exit(1);        }catch(SQLException ex) {           System.err.println("Tidak Berhasil Koneksi dengan Northwind");           System.exit(1);        }    }    public ResultSet select(){       ResultSet rs = null;       Statement st;       try{          st = con.createStatement();          String sql1 = "SELECT * FROM SHIPPERS";          rs = st.executeQuery(sql1);       }catch(SQLException ex) {          System.err.println("Tidak Berhasil update Northwind");          System.exit(1);       }       return(rs);    }  

Slide30    public void insert(){       try{           Statement st = con.createStatement();           String sql2 = "INSERT INTO SHIPPERS (ShipperID, CompanyName, Phone) VALUES (4,'Federal Express','(031) 555-1111')";           st.executeUpdate(sql2);        }catch(SQLException ex) {           System.err.println("Tidak Berhasil update Northwind");           System.exit(1);        }    }     public void showShippers(ResultSet rs){        try{           ResultSetMetaData rsData = rs.getMetaData();           String kolom1 = rsData.getColumnName(1);           String kolom2 = rsData.getColumnName(2);           String kolom3 = rsData.getColumnName(3);           while (rs.next()){               System.out.print(rs.getString(kolom1)+" ");               System.out.print(rs.getString(kolom2)+" ");               System.out.println(rs.getString(kolom3)+" ");           }         }catch(SQLException ex) {            System.err.println("Tidak Berhasil retrieve Northwind");            System.exit(1);         }     }     public void dbClose(){        try {           con.close();        }catch(SQLException sqlex){          System.err.println("Error :Koneksi Database tidak Bisa diputus");        }     }  

Slide31   public static void main(string argv[]) throws exception {        Insert app = new Insert();         ResultSet rs;         app.dbOpen();         rs = app.select();         System.out.println("Data Shippers sebelum insert");         app.showShippers(rs);         app.insert();         rs = app.select();         System.out.println("Data Shippers sesudah insert");         app.showShippers(rs);         app.dbClose();     } }

Slide32Percobaan 3• Melakukan update data suatu record pada suatu tabel, dengan menggunakan query SET.

Slide33import java.sql.*;public class Set {     private Connection con;     Set(){         con=null;     }     public void dbOpen() {         String dbname="jdbc:odbc:Northwind";         try {            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");            con=DriverManager.getConnection(dbname,"","");            if (con==null)                System.err.println("Koneksi ke Database gagal");            else                System.err.println("Koneksi ke Database Berhasil");         }catch(ClassNotFoundException ex) {            System.err.println("Driver Error");            ex.printStackTrace();            System.exit(1);         }catch(SQLException ex) {            System.err.println("Tidak Berhasil Koneksi dengan Northwind");            System.exit(1);         }     }     public ResultSet select(){         ResultSet rs = null;         Statement st;         try{            st = con.createStatement();            String sql1 = "SELECT * FROM SHIPPERS";            rs = st.executeQuery(sql1);         }catch(SQLException ex) {            System.err.println("Tidak Berhasil update Northwind");            System.exit(1);         }         return(rs);     }

Slide34    public void set(){        try{             Statement st = con.createStatement();             String sql2 = "UPDATE SHIPPERS SET CompanyName = 'TIKI' WHERE ShipperID=1";             st.executeUpdate(sql2);         }catch(SQLException ex) {            System.err.println("Tidak Berhasil update Northwind");            System.exit(1);         }     }     public void showShippers(ResultSet rs){         try{           ResultSetMetaData rsData = rs.getMetaData();           String kolom1 = rsData.getColumnName(1);           String kolom2 = rsData.getColumnName(2);           String kolom3 = rsData.getColumnName(3);           while (rs.next()){               System.out.print(rs.getString(kolom1)+" ");               System.out.print(rs.getString(kolom2)+" ");               System.out.println(rs.getString(kolom3)+" ");               }         }catch(SQLException ex) {            System.err.println("Tidak Berhasil retrieve Northwind");            System.exit(1);         }     }     public void dbClose(){         try {             con.close();         }catch(SQLException sqlex){             System.err.println("Error :Koneksi Database tidak Bisa diputus");         }     }  

Slide35   public static void main(string argv[]) throws exception {        Set app = new Set();         ResultSet rs;         app.dbOpen();         rs = app.select();         System.out.println("Data Shippers sebelum set");         app.showShippers(rs);         app.set();         rs = app.select();         System.out.println("Data Shippers sesudah set");         app.showShippers(rs);         app.dbClose();     } }

Slide36Soal Latihan1. Buat sebuah program yang membuat tabel bernama BUKU dengan struktur tabel sebagai berikut: Berikut ini adalah query untuk membuat tabel BUKU: CREATE TABLE BUKU   (NAMA_BUKU VARCHAR(40),      ID_PENERBIT INTEGER,     HARGA REAL,     PENJUALAN INTEGER) • Karena query diatas melakukan update terhadap database maka gunakan method executeUpdate(). Jangan lupa menentukan database yang digunakan untuk menyimpan tabel buku terlebih dahulu! Nama kolom Tipe data Panjang NAMA_BUKU VARCHAR 40 ID_PENERBIT INTEGER HARGA REAL PENJUALAN INTEGER

Slide37Soal Latihan2.  Setelah membuat tabel pada nomor 1 diatas. Buatlah program yang digunakan untuk mengusi tabel BUKU tersebut dengan data sebagai berikut: 3.  Setelah nomor 1 dan 2 selesai. Tampilkan semua data tabel BUKU tersebut dengan menggunakan metode next dan getXxx. Gunakan method executeQuery(); 4.  Misal toko buku ini berhasil menjual  buku Pemrograman Java sebanyak 5 buah. Maka lakukan update tabel untuk mengubah kolom PENJUALAN yang sebelumnya 0 menjadi 5. Gunakan query sebagai berikut: UPDATE BUKU SET PENJUALAN = 5       WHERE NAMA_BUKU = ‘Pemrograman Java’ NAMA_BUKU ID_PENERBIT HARGA PENJUALAN E-Learning 101 25000 0 Jaringan Tanpa Hardisk 203 23000 0 Oracle9i 311 54000 0 Pemrograman Java 101 49000 0