BAHASA PEMROGRAMAN 3 PERTEMUAN KE 5 NETBEANS DATABASE BY : TITO SUGIHARTO Pembahasan Sistem Database Pengantar teknologi JDBC Sejarah JDBC Desain JDBC JDBC Driver Arsitektur aplikasi JDBC Petunjuk langkah penggunaan JDBC Retrieve data dari ResultSet Pendahuluan Database adalah sekumpulan file data yang satu sama lainnya saling berhubungan yang diorganisasi sedemikian rupa sehingga memudahkan untuk mendapatkan dan memproses data tersebut. Lingkungan sistem database menekankan pada data yang tidak tergantung (idenpendent) pada aplikasi yang akan menggunakan data tersebut. Data adalah kumpulan kumpulan fakta dasar (mentah) yang terpisah. Data menggambarkan suatu organisasi. Sistem Database Berbagai macam jenis sistem database : ◦ High performance commercial databases – eg. Oracle, DB2, Informix, Microsoft SQL server ◦ Open-source – eg. PostgreSQL, MySQL and Interbase ◦ Lightweight Java databases – eg. Cloudscape, InstantDB and Pointbase. ◦ Desktop databases – eg. Paradox and Access. Need to choose and install database first. JDBC JDBC API adalah kelas Java API untuk mengakses segala data berupa tabel. JDBC adalah sebuah nama merek dagang atau trademark dari Sun Microsystem (bukan sebuah singkatan, meskipun demikian JDBC sering disebut sebagai “Java Database Connectivity”) yang merupakan bagian dari teknologi Java yang diperuntukkan untuk pengolahan Database. JDBC juga memiliki library atau API yang dapat digunakan untuk kebutuhan database baik itu koneksi maupun pengolahan data. JDBC Architecture Tipe 1 : JDBC-ODBC Bridge plus ODBC Driver Tipe Driver ini menyediakan akses JDBC melalui ODBC Driver. JDBC-ODBC bridge telah diikutkan pada distribusi JDK sejak versi 1.2, dan menjadi gateway ke ODBC API. Driver tipe ini akan kita gunakan dalam pembuatan program JDBC dengan menggunakan database server Microsoft Access. Type 1: JDBC-ODBC Bridge and ODBC Driver Sebelum JDBC ODBC sudah ada. Bisakah pakai ODBC dari Java untuk koneksi JDBC? bisa yaitu dengan bantuan JDBC API yang berupa JDBCODBC bridge Sun menyediakan sebuah driver JDBC-ODBC bridge, yang cocok untuk keperluan eksperimental dan untuk situasisituasi dimana tidak ada driver yang sesuai. Tipe driver ini juga paling cocok untuk jaringan korporat dimana instalasi klien bukan masalah besar, atau untuk aplikasi server yang ditulis dalam bahasa Java dalam arsitektur 3-tier. Karakteristik JDBC - ODBC? ODBC tidak cocok untuk dipakai langsung dari bahasa pemrograman Java karena ODBC menggunakan bahasa C. Pemanggilan dari Java ke kode native C memiliki beberapa masalah dalam sekuritas, implementasi, robustness, dan portabilitas aplikasi. Penerjemahan secara literal dari ODBC C API kedalam Java API bukanlah hal yang baik. Contoh: Java tidak memiliki pointer. ODBC sulit untuk dipelajari. ODBC memiliki option-option yang kompleks walaupun untuk query-query sederhana. Sebaliknya JDBC didesain tetap sederhana meski mengerjakan hal-hal kompleks. Jika menggunakan ODBC, driver manager harus diinstall secara manual pada tiap mesin klien. Jika menggunakan JDBC driver, kode JDBC secara otomatis diinstall. Type 2 : A native API partly Java technology-enabled driver Tipe Driver ini mengkonversi pemanggilan JDBC ke dalam pemanggilan klien API untuk Oracle, Sybase, Infomix, BD2, atau DBMS yang lainnya. Tipe driver ini juga memerlukan kode binary yang spesifik terhadap system operasi yang di-load ke dalam masing-masing mesin klien. Tipe ini memerlukan software tertentu yang diinstall pada mesin klien. Type 3 : Pure Java Driver for Database Middleware Tipe driver ini menterjemahkan pemanggilan JDBC ke dalam middleware protokol verdor, yang kemudian diterjemahkan ke dalah protokol DBMS oleh server middleware. Middleware menyediakan konektivitas bagi banyak database yang berbeda. Tipe driver ini sangat fleksibel, karena tidak memerlukan kode yang terinstall di mesin klien dan sebuah driver dapat menyediakan akses ke berbagai database. Type 4: Direct-to-Database Pure Java Driver Tipe driver ini mengkonversi JDBC secara langsung ke dalam protokol jaringan yang digunakan oleh DBMS, memungkinkan suatu panggilan langsung dari mesin klien kepada DBMS server, dan meyediakan suatu solusi praktis untuk akses internet. Driver-driver dari tipe ini dibangun menggunakan teknologi Java murni sehingga memberikan portabilitas tinggi. Komponen Utama JDBC Driver adalah komponen untuk menangani komunikasi dengan database server. DriverManager adalah komponen untuk menangani objek Driver dimana objek DriverManager juga mengabstraksi detail dari proses kerja objek Driver. Connection adalah komponen untuk merepresentasikan koneksi secara fisik ke database Komponen Utama JDBC Statement adalah komponen untuk mengirim perintah-perintah SQL ke database. ResultSet adalah komponen untuk menyimpan data yang didapat dari database setelah perintah SQL dijalankan dengan menggunakan komponen Statement. SQLException adalah komponen untuk menangangi kesalahan-kesalahan (error) yang mengkin terjadi dalam pengolahan database. Application Architectures Contoh Two-Tier Architecture Arsitektur 3-tier Contoh Three-tier Architecture Server Web Server (Apache, IIS, Glasfish, dsb) Middleware (ASP, JSP, PHP, dsb) Internet Permintaan Tanggapan Browser (Internet Explorer, Netscape,dsb) klien Database (Access, Oracle, dsb) Beberapa Keuntungan Arsitektur Three-Tier Keluwesan teknologi ◦ Mudah untuk mengubah DBMS engine ◦ Memungkinkan pula middle tier ke platform yang berbeda Biaya jangka panjang yang rendah ◦ Perubahan-perubahan cukup dilakukan pada middle tier daripada pada aplikasi keseluruhan Keunggulan kompetitif ◦ Kekampuan untuk bereaksi thd perubahan bisnis dengan cepat, dengan cara mengubah modul kode daripada mengubah keseluruhan aplikasi Langkah Penggunaan JDBC 1. 2. 3. 4. 5. 6. 7. Meload driver JDBC Mendefinisikan URL database Membuat dan melakukan koneksi Membuat obyek statement Mengeksekusi query Memproses result Menutup koneksi 1. JDBC : Load Driver Driver : ◦ library yang digunakan untuk berkomunikasi dengan database server ◦ Dengan menggunakan driver, program Java yang menggunakan API JDBC dapat berinteraksi dan dapat dimengerti oleh database server. Untuk database yang berbeda dibutuhkan driver yang berbeda. ....... try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); con=DriverManager.getConnection(dbname,"",""); if (con==null) status = "gagal"; else status = "berhasil"; }catch(ClassNotFoundException ex) { status = "Driver Error"; }catch(SQLException ex) { status = "gagal"; } con.close(); Jenis Driver Database Nama Driver database: JDBC-ODBC : sun.jdbc.odbc.JdbcOdbcDriver Oracle : oracle.jdbc.driver.OracleDriver Sybase : com.sybase.jdbc.SybDriver MySQL: com.mysql.jdbc.Driver PostgreSQL: org.postgresql.Driver Microsoft SQLServer 2000 : com.microsoft.jdbc.sqlserver.SQLServerDriver 2. Mendefinisikan Koneksi URL Menspesifikasikan lokasi database server. Untuk mendefinisikan URL bisa menggunakan dokumentasi driver. Berikut ini contoh mendefinisikan url: Connection con=null; String dbname="jdbc:odbc:DSFilm"; String status=""; Jenis URL Nama URL database: JDBC-ODBC : jdbc:odbc:nama_database Oracle : jdbc:oracle:thin:@nama_host:1521:namaDB MySQL: jdbc:mysql://nama_host:3306/namaDB PostgreSQL: jdbc:postgresql://nama_host:5432/namaDB Microsoft SQLServer 2000 : jdbc:microsoft:sqlserver://nama_host:1433;DatabaseNa me=namaDB 3. JDBC : Membuat Koneksi Cara : memanggil method getConnection dari class DriverManager dengan melewatkan URL (hasil langkah dua) sebagai argumen. getConnection akan melempar SQLException Contoh: Connection con=null; String dbname="jdbc:odbc:DSFilm"; String status=""; try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); con=DriverManager.getConnection(dbname,"",""); 4. JDBC : Membuat Obyek Statement Object Statement digunakan untuk mengirim query dan perintah ke database. Object Statement dibuat dengan cara bekerjasama dengan class Connection. Cara: memangil method createStatement() dari obyek Connection. Contoh: Statement statement = connection.createStatement(); 5. JDBC : Mengeksekusi Query Memanfaatkan object Statement untuk memproses query. Cara: memanggil method executeQuery() dari object Statement. memberikan return value bertipe ResulSet String kueri = "INSERT INTO FILM(ID, JUDUL, JUMLAH) VALUES ('"+id+"','"+judul+"',"+jumlah+")"; ResultSet rs=statement.executeQuery(kueri); int isiTabel = st.executeUpdate(kueri); Note : Untuk memodifikasi database, gunakan statement.executeUpdate(sql); yang mendukung string sql UPDATE, INSERT INTO, DELETE ResultSet ResultSet memberikan bermacam2 method getXxx dengan parameter indek kolom atau nama kolom dan mengembalikan data. Method lain object ResultSet: ◦ findColumn() mendapatkan index (integer value) berdasarkan nama kolom. Kolom pertama mempunyai index 1 bukan 0. ◦ getMetaData() retrieve informasi mengenai ResultSet, returns object ResultSetMetaData. ◦ wasNull() Mengetahui apakah getXxx() menghasilkan SQL null. 6. JDBC : Memproses result Dengan menggunakan method next() pada object ResultSet mendapatkan results per satu baris. 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("-------------"); } Kolom pertama mempunyai index 1 bukan 0. Object ResultSet otomatis akan ditutup bila ada object ResultSet baru. 7. JDBC : Menutup Koneksi Harus didefinisikan secara eksplisit. connection.close(); Karena membuka koneksi adalah mahal, maka penundaan langkah terakhir ini hanya jika masih ada operasi database yang dilakukan. TUGAS PRAKTIKUM KIRIM KE:: [email protected] FORMAT SUBJEK [LAPORAN1] [NAMA] [KELAS]