AKSES DATABASE MENGGUNAKAN JDBC Pada bab ini Anda akan belajar bagaimana membuat program koneksi Java dengan database Access dan MySQL. Selain itu, Anda juga akan diajarkan bagaimana membuat program sederhana dengan kedua database tersebut. 5.1 DBMS dengan MySQL Software database ini cukup familiar bagi programmer berbasis open source dan para pengembang aplikasi client-server, terutama web programming. Untuk bisa mengakses MySql dibutuhkan driver yang bisa menjembatani antara dabase ini dengan mesin java. Jika Anda belum memiliki installer-nya, kunjungi situs http://www.mysql.com atau http://dev.mysql.com/doc/mysql/en untuk mendapatkan manualnya. Dalam hal ini penulis menggunakan distribusi dari pihak ketiga/pengembang lain yang memanfaatkan database tersebut dengan bantuan program pendukung lainnya, yaitu AppServ. Program bantu ini untuk manajemen basis data MySQL dengan skrip php dan dilengkapi server Apache. Untuk mendapatkannya, Anda bisa mengunjungi alamat http://appservnetwork.com (Anda juga bisa mendapatkan file dalam 85 bonus CD buku ini). Program tersebut free jadi Anda tidak usah resah dengan biaya. Program tersebut juga sudah didukung dengan PhpMyAdmin sebuah end user database management yang sudah dikenal luas oleh para pengembang database server oriented/Web programming. Pastikan web server dan mysql sudah berjalan. Jika Anda menggunakan Windows XP, lihat dari Control Panel Æ Administrative Tool Æ Services sehingga muncul jendela semua servis yang sedang berjalan dalam komputer. Pastikan bahwa Apache2.2 dan mysql sudah berjalan. Gambar 5.1 Servis Apache Gambar 5.2 Servis MySQL Anda bisa menggunakan database manajemen yang lain yang berbasiskan desktop (stand alone) atau berbasis web. Untuk melakukan manajemen database menggunakan web base interface, lakukan bebarapa langkah berikut ini: 1. Pastikan bahwa Anda sudah memasang Database server MySQL, Webserver Apache, dan PHP, serta PHPMyAdmin dalam komputer Anda. Anda bisa mengopi dari bonus CD (folder software/appserv-win32-2.5.10.exe) kalau belum memilikinya. 86 2. Jalankan WebBrowser, ketikkan alamat http://localhost/phpMyAdmin. Anda juga bisa mengganti localhost dengan nama komputer Anda, sehingga muncul halaman utama. Perhatikan Gambar 5.3. 3. Buat database baru, dengan cara memasukkan namanya dalam kotak isian Create new database. Ketikkan latihan_b5, lalu klik tombol Create seperti pada Gambar 5.3. Gambar 5.3 Tampilan PhpMyAdmin 4. Jendela yang muncul selanjutnya adalah seperti Gambar 5.4, yaitu pesan pembuatan database sukses. Dan tersedia untuk memasukkan nama tabel baru dalam database tersebut. Anda bisa membuat tabelnya, dengan cara memasukkan nama tabel pada kotak isian name di panel Create new table on latihan_b5. Ketikkan mahasiswa kemudian isi jumlah kolomnya pada kotak isian Number of fields. Ketikkan 4 (pada panel yang sama), kemudian klik tombol Go. Perhatikan Gambar 5.4 dan langkah selanjutnya pada Gambar 5.5. Gambar 5.4 Membuat Table Baru 87 5. Pada langkah pemasukan data tabel dengan kolom-kolom yang tersedia seperti Gambar 5.5, isikan semua nama kolom pada kotak yang sudah disediakan. Jangan lupa mengisikan juga tipe data pada kolom Type dan panjangnya pada kolom Length/ Values. Setelah terisi semua, klik tombol Save. Gambar 5.5 Mengisi Kolom Tabel Baru 6. Langkah berikutnya adalah membuat kunci utama pada tabel ini dengan cara: masuk dalam struktur tabel (klik link menu Structure). Kemudian pada sebelah kanan terlihat gambar kunci, sorot pada baris no_mhs, kemudian arahkan mouse pada tombol kunci tersebut (lihat Gambar 5.6). Setelah itu program akan menampilkan pesan konfirmasi tentang pembuatan kunci tersebut. Gambar 5.6 Menambahkan Primary Key 88 Gambar 5.7 Konfirmasi Penambahan Kunci 7. Selanjutnya Anda perlu memasukkan beberapa data untuk latihan koneksi database dengan Java. Sekarang, klik tombol Insert pada deretan menu yang ada di sisi atas, kemudian masukkan beberapa data yang diperlukan. Gambar 5.8 Tombol-Tombol Fungsional phpMyAdmin Gambar 5.9 Pemasukan Data Baru 8. Terakhir, klik tombol Go. 89 5.2 Membuat Koneksi untuk MySQL Tibalah waktunya untuk membuat programnya. Buat dengan editor yang paling ringan. Sekarang jangan gunakan editor yang hight end user dulu karena yang kita buat sekarang belum membutuhkan desain yang rumit. Prinsipnya, gunakan alat yang sesuai kebutuhan agar selalu efektif dalam bekerja. Pakailah editor Gel dan lakukan langkah-langkah berikut ini: 1. Buat proyek baru, beri nama Database. 2. Tambahkan kelas baru dalam proyek tersebut, beri nama KoneksiMysql. 3. Setting library driver Mysql dalam editor Gel untuk proyek ini. Jika dalam editor Anda tidak di-setting secara global dalam Options (menu Options pada tab classpath), maka Anda harus melakukan setting setiap proyek. Untuk itu lakukan setting secara global pada Gel, dengan cara: a. Masuk dalam jendela Options. b. Masuk dalam tab Classpath. c. Tekan tombol Add File pilih file driver MySQL. Jika Anda belum memiliki, bisa mengopi dari bonus CD, silakan kopi file mysql-connector-java-5.1.6-bin.jar dalam folder com dan letakkan dalam folder latihan bab5. 4. Ketik dan sesuaikan kode program Anda seperti berikut: import java.sql.*; public class KoneksiMysql { private private private private String String String String host="localhost"; user="root"; password="admin"; db=" latihan_b5"; public KoneksiMysql() { Connection conn; Statement st; ResultSet rs; int no=0; try { 90 Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection( "jdbc:mysql://"+ host +"/"+ db +"?user=" +user+ "&password="+ password); st = conn.createStatement(); rs = st.executeQuery("Select * from mahasiswa"); while (rs.next()) { no=no+1; System.out.println(no + ")"); System.out.println("No Mhs :" rs.getString("no_mhs")); System.out.println("Nama :" rs.getString("nama")); System.out.println("Alamat :" rs.getString(3)); System.out.println("Jurusan :" rs.getString(4)); System.out.println("============" "===================="); } conn.close(); } } + + + + + } catch(Exception e) { System.out.println( "Pesan kesalahan : "+ e.getMessage()); } public static void main(String[] args) { KoneksiMysql koneksimysql = new KoneksiMysql(); } 5. Pastikan bahwa properti host, user, password dan db sudah disesuaikan dengan konfigurasi user MySQL dalam komputer Anda. Jika tidak, Anda dijamin gagal dalam menampilkan data dari database tersebut. private private private private String String String String host="localhost"; user="root"; password="admin"; db=" latihan_b5"; 6. Compile dan jalankan program. 91 Gambar 5.10 Keluaran dari KoneksiMySQL.java Properti host, user, password dan db dipakai untuk akses ke dalam database MySQL. Pada constructor KoneksiMysql terdapat kelas bertipe Connection dan Statement. Kelas tersebut dipakai untuk koneksi ke dalam database melalui query, sedangkan kelas ResultSet dipakai untuk menyimpan hasil query dalam bentuk kumpulan data yang bisa diakses secara berurutan. Sedangkan perintah Class.forName("com.mysql.jdbc.Driver") adalah untuk melakukan pengenalan terhadap driver database yang digunakan, yaitu com.mysql.jdbc.Driver. Jika kelas ini tidak ditemukan dalam class path, koneksi akan gagal. 92 5.3 Design DB Paket Dalam buku Java yang kami terbitkan sebelumnya (Membuat Aplikasi Penjualan dengan Java dan MySQL) telah dijelaskan tentang kelas-kelas untuk mengakses dan manajemen database versi 1.0.0, termasuk pembuatannya, antara lain kelas DB, DBTable, DBQuery, DriverConnection, MyTable dan Utils. Sebenarnya dalam buku ini juga menggunakan kelas yang sudah dipakai pada buku sebelumnya, tetapi sudah di-update ke versi 2.0.0. Secara prinsip dasarnya adalah sama, sehingga tidak perlu lagi dibahas dalam buku ini. Namun, perlu penulis gambarkan perancangan paket ini agar lebih mudah untuk dipahami bagi pembaca, baik yang belum pernah membaca buku pertama, atau yang sudah pernah membaca buku sebelumnya. 5.3.1 DB.java Kelas ini adalah abstraksi dari objek tabel fisik dalam sebuah database. Agar kita bisa melakukan pengambilan data dan melakukan modifikasi terhadap data (tabel) tersebut dengan cepat dan mudah. Serta tidak mengetikkan program sama secara berulangulang. Seperti yang kita ketahui sebelumnya bahwa untuk mengambil data dalam tabel perlu melakukan pengenalan driver database, membuat statement, kemudian menjalankan query yang disimpan dalam sebuah recordset (himpunan record). Sehingga setiap kali kita melakukan operasi baca/tulis, sejumlah perintah program akan kita tuliskan berulang-ulang. Hal itu tidak salah, tetapi akan lebih baik jika kita membuat sebuah objek yang bisa menggantikan pekerjaan itu. Sehingga penulisan kode program akan menjadi sederhana dan mudah dalam proses pengembangannya. Inilah keuntungannya pemrograman yang bersifat modular (tersusun atas modul-modul). 5.3.2 DBTable.java Kelas ini diturunkan dari kelas DB, yang dikhususkan untuk menangani hubungan dengan sebuah tabel saja. Properti yang dimilikinya adalah tableName yang menyimpan informasi nama tabel dalam database yang akan dibaca/ditulis. 93 Method yang dimilikinya adalah setTableName untuk mengubah/ menentukan nama tabel dan method makeActive untuk mengaktifkan data dalam komponen DBTable ini. Dan method init untuk memasukkan perintah SQL agar membuka satu tabel tertentu. Tentu saja selain metode di atas, komponen ini juga memiliki seluruh kemampuan nenek moyangnya, yaitu kelas DB. 5.3.3 DBQuery.java Kelas ini diturunkan dari kelas DB, yang memiliki kemampuan untuk melakukan pengambilan data melalui query dalam database (bisa membaca dari beberapa tabel sekaligus, atau hanya beberapa kolom saja dari total tertentu). Metode init digunakan untuk menentukan tipe recordset-nya menjadi readonly (tidak untuk edit), sedangkan makeActive digunakan untuk mengaktifkan data dalam komponen DBQuery. 5.3.4 DBCombo.java Kelas ini diturunkan dari kelas DBQuery, yang memiliki kemampuan untuk melakukan pengambilan data melalui query dan siap untuk meletakkan data dalam sebuah combobox. Dengan berbagai kondisi atau pilihan data untuk ditampilkan secara dinamis. 5.3.5 MyModelTable.java Komponen ini hampir sama dengan DefaultTableModel dalam paket java.swing.table, yaitu komponen yang mampu menampilkan tabular data/tabel. Karena kami memang mengembangkan dari kelas tersebut agar bisa disesuaikan dengan kebutuhan aplikasi yang kita buat. Selalu gunakan sederhana saja, yaitu: “pelajari yang sudah ditulis pengembang terdahulu, baru dikembangkan semaksimal mungkin”. Untuk pengembangan, properti yang ditambahkan antara lain readOnlyCol untuk menyimpan informasi mengenai atribut setiap kolom dalam tabel, sehingga kita bisa menentukan kolom mana yang boleh diedit atau mana yang tidak boleh diedit. Sedangkan method yang ditambahkan antara lain setReadOnlyCol untuk mengisi properti readOnlyCol. 94 5.3.6 MyTable Komponen ini adalah sebuah kontainer panel yang memuat kelas JscrollPanel dan JTable dengan model tabelnya adalah MyModelTable. Dengan kemampuan khusus, untuk menampilkan data dari database ke dalam bentuk tabel (tabular data) dibungkus dalam satu kelas agar memudahkan dalam pengembangan dan mengurangi kompleksitas program. 5.3.7 Utils Kelas ini digunakan untuk keperluan yang bersifat umum, independent dan sering kali digunakan, seperti halnya fungsi-fungsi standar pada Java. Contohnya fungsi-fungsi bilangan parseInt, parseDouble dan sebagainya. Di sini akan dibuat dua buah metode showMessage() untuk menampilkan pesan, dan isNumber() untuk mengetahui sebuah string tertentu berformat angka atau bukan. DriverConnection DB MyModelTable DBTable Utils MyTable DBQuery DBCombo Gambar 5.11 Desain DBPaket ooo0ooo 95