Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
TRIK KONEKSI DATABASE Dalam bab ini, Anda akan belajar tentang teknik melakukan koneksi dengan database. Dalam pemrograman database, perihal koneksi adalah hal yang paling pertama kali untuk diselesaikan atau ditentukan, apa dan bagaimana nantinya koneksi dari sebuah aplikasi tersebut bekerja. Materi dalam bab ini menyangkut pembuatan koneksi simple sampai yang expert, diakhiri dengan membuat kelas untuk melakukan konfigurasi koneksi. 2.1 Koneksi dengan Database MS Access Pada hari ini hampir semua orang tahu apa itu Microsoft Office. Bahkan jika Anda tidak mengetahuinya, maka bagi kebanyakan orang Anda adalah orang yang ketinggalan zaman. Meskipun Anda sudah menguasai berbagai pemrograman sekalipun, suka atau tidak suka, produk ini sudah membumi di kalangan masyarakat kita. Termasuk paket-paket di dalamnya, seperti MS Access, sebagai DBMS yang dianggap cukup ampuh untuk kebutuhan-kebutuhan kecil-menengah bagi sebagian kalangan. Ikuti langkah-langkah berikut ini. 1. Anda sebelumnya harus punya database dalam MS Access, yang memiliki satu atau beberapa table. 25 2. Buat Data Source ODBC, dari Control Panel Æ Administrative Tools Æ Data Sources (ODBC), sehingga muncul jendela ODBC Data Source Administrator. Gambar 2.1 ODBC Administrator 3. Dari jendela ODBC Administrator, klik tombol Add, sehingga muncul jendela Create New Data Source. Pilih Microsoft Access Driver (*.mdb), klik Finish, sehingga muncul jendela ODBC Microsoft Access Setup. Gambar 2.2 Memilih Driver 26 4. Pada jendela ODBC Microsoft Access Setup, klik tombol Select… (pada groupbox Database). Selanjutnya cari nama file database access yang disimpan sebelumnya. Misalnya pada E:\JAVA BUKU\Source\data.mdb, lalu klik OK dan OK untuk mengakhiri. Gambar 2.3 Menentukan Nama Data Source Name Gambar 2.4 Memilih File Database Pilih nama file yang ditampilkan dalam jendela sebelah kiri (Database name). Sedangkan jendela sebelah kanan untuk memilih direktorinya. 5. Buat project baru (Java Application), beri nama project-nya dengan Bab021. Tidak perlu setting Path library (driver koneksi) 27 karena sudah dikenali dengan ODBC driver secara built-in dalam Java. package bab021; import java.sql.*; /** * */ public class Main { /** * @param args the command line arguments */ public static void main(String[] args) { // TODO code application logic here Connection conn; try { // Daftarkan driver JDBC yang akan digunakan Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); } // Buat Koneksi ke DSN conn = DriverManager.getConnection( "jdbc:odbc:odbcku"); System.out.println("koneksi sukses"); catch(Exception e) { System.out.println("Pesan gagal: "+ e.getMessage()); } } } Hasilnya sebagai berikut. Gambar 2.5 Tampilan Koneksi Berhasil 28 2.2 Koneksi dengan Database MySQL Database MySQL dikenal cukup luas di kalangan programmer open source. DBMS ini diyakini cukup ampuh untuk kebutuhan aplikasi dengan skala data menengah. Sebagai programmer tentunya Tool development kit ini sangat berguna untuk menangani kebutuhankebutuhan dewasa ini. Untuk membuat koneksinya, ikuti langkahlangkah berikut ini. 1. Pastikan bahwa server MySQL sudah berjalan dengan baik. 2. Buat database, beri nama tip_022. 3. Buat proyek baru (Java Application), beri nama Bab022, cukup dengan kelas Main saja. 4. Edit kelas Main.java, sehingga menjadi seperti berikut. package bab022; import java.sql.*; /** * * @author Administrator */ public class Main { /** * @param args the command line arguments */ public static void main(String[] args) { // TODO code application logic here String String String String String user="root"; pwd ="admin"; host="localhost"; db="tip_022"; urlValue=""; try { Class.forName("com.mysql.jdbc.Driver"); urlValue="jdbc:mysql://"+ host +"/"+ db +"?user=" + user + "&password="+ pwd; Connection conn= DriverManager.getConnection(urlValue); 29 } System.out.println("koneksi sukses"); conn.close(); catch (SQLException e){ System.out.println("koneksi gagal " + e.toString()); } } } catch(ClassNotFoundException e) { System.out.println( "jdbc.Driver tidak ditemukan"); } 5. Lakukan kompilasi (Clean and Build), kemudian jalankan program. Dan lihat apa yang muncul dalam jendela output? Gambar 2.6 Tampilan Output Awal Terlihat bahwa program di-compile sukses, tanpa error. Akan tetapi, program menunjukkan kegagalan/run time error. Tentunya hal ini akan membuat pusing bagi pemula, karena merasa program sudah free error, tapi kenapa saat dijalankan program memberikan hasil yang error? Inilah persoalan mendasar yang sering membuat programmer baru berputus asa dan mengurungkan niatnya untuk melanjutkan mempelajari program. Baiklah, mari dikupas persoalan di atas dengan saksama, diawali dengan pesan error yang muncul, yaitu “jdbc.Driver tidak ditemukan”. Hal ini terlihat di dalam program bahwa perintah untuk menampilkan pesan ini ada pada langkah eksepsi kedua (ClassNotFoundException e). Dari sini dapat disimpulkan 100% 30 bahwa ini terjadi akibat kelas tersebut tidak ada, kelas apakah itu? Kita bisa melihat bahwa dalam program kita menuliskan Class.forname (“com.mysql.jdbc.Driver”). Berarti kelas driver MySQL-lah yang bermasalah, untuk itu lakukan pemasangan driver (ikuti langkah berikutnya). 6. Untuk memasang driver MySQL tersebut, Anda bisa membuka sub-subbab 1.2.2, atau menggunakan cara alternatif berikut. Klik kanan Project Æ Properties, sehingga muncul jendela Project Properties. 7. Dalam jendela Project Properties, pilih Libraries pada kotak Categories. Di sebelah kanan tekan tombol Add Library… (pada tab Compile), sehingga muncul jendela Add Library. Pilih MySQL JDBC Driver, tekan Add Library, lalu klik OK pada jendela Properties. 8. Kemudian Compile ulang. Jalankan program dan lihat hasilnya. Anda akan mendapati pesan “koneksi sukses”. Jika Anda masih belum berhasil, periksa langkah Anda. 2.3 Koneksi dengan Database Lain Pada prinsipnya, koneksi dengan database lain adalah sama saja dengan Anda melakukan koneksi dengan MySQL sebelumnya, yakni siapkan file/kelas JDBC driver-nya (Anda bisa download dari internet). Selanjutnya pasang dalam Project, tidak perlu mengubah code program. Jika Anda sebelumnya sudah mempunyai aplikasi database, hanya string koneksinya saja yang diganti (cukup kelas koneksinya saja). Anda bisa membuka http://www.devx.com/tips/Tip/28818 untuk melihat beberapa konfigurasi database yang berbeda. 2.4 Membuat Kelas Koneksi Hampir semua aplikasi bisnis, mengharuskan koneksi database bisa dilakukan secara fleksibel (dinamis), sehingga bisa diubah dan disesuaikan oleh User (penggunanya). Misalkan nama server-nya, 31 account user MySQL, maupun nama databasenya. Koneksi database yang disimpan secara statik dalam program, akan menyulitkan User dan programmer sendiri pada akhirnya. Sehingga perlu dibuat sebuah kelas yang bisa digunakan untuk melakukan konfigurasi database secara run-time. Untuk membuatnya ikuti langkah berikut: 1. Buat sebuah project baru, melalui menu File Æ New Project, sehingga muncul jendela New Project. Gambar 2.7 Membuat Java Class Library Pada jendela New Project, dalam kotak Categories pilih Java. Dalam kotak Projects, pilih Java Class Library, klik Next. Sehingga muncul jendela New Java Class Library. Gambar 2.8 Jendela Nama Paket Library 32 Pada jendela New Java Class Library, masukkan nama projectnya Bab024, klik Finish. 2. Buat sebuah paket baru bernama koneksi, melalui jendela Projects klik node Source Packages Æ New Æ Java Package, sehingga muncul jendela New Java Package. Gambar 2.9 Menu Membuat Paket Gambar 2.10 Menentukan Nama Paket Pada jendela New Java Package, pada kotak masukan Package Name isikan koneksi, klik Finish. 33 3. Pada paket koneksi, tambahkan sebuah form JDialogs, dengan cara; klik kanan paket koneksi Æ New Æ JDialogs Form…. Jika tidak muncul menu JDialogs Form, pilih Other, masukkan nama form yang akan menjadi nama kelasnya (pada kotak Class Name), selanjutnya klik tombol Finish. Gambar 2.11 Menu Membuat Dialogs Form Gambar 2.12 Menambah JDialogs Form melalui Menu Other Jika Anda menggunakan menu Other…, maka akan muncul jendela New File. Pada kotak pilihan Categories pilih Swings GUI Forms. Pada kotak pilihan File Types pilih JDialog Form, klik Next, sehingga muncul jendela New JDialog Form. 34 Gambar 2.13 Memberi Nama JDialog Form Pada jendela New JDialog Form, ketikkan SettingUI pada kotak masukan Class Name, klik Finish. 4. Ubah properti title pada form SettingUI, menjadi DB Setting, kemudian tambahkan beberapa objek ke dalam form antara lain: Object [Variable Name] Property Value JLabel [jLabel1] text Server JTexField [txt_server] text localhost JLabel [jLabel2] text User JTextField [txt_user] text root JLabel [jLabel3] text Password JPasswordField [txt_password] text admin JLabel [jLabel4] text Database JTextField [txt_database] text tip_024 JButton [bConnect] text Connect… JLabel [jLabel5] text Status JTextArea [txt_status] 35 Gambar 2.14 Design Form Gambar 2.15 Hierarki Objek 5. Tambahkan kode program pada kelas SettingUI seperti berikut. package Koneksi; import java.sql.*; import javax.swing.JOptionPane; /** * 36 * @author Administrator */ public class SettingUI extends javax.swing.JDialog { private Connection ConnectionObj; private boolean blnIsConnected=false; public Connection getConnection(){ return ConnectionObj; } public boolean isConnected() { return blnIsConnected; } /** Creates new form SettingUI */ public SettingUI(java.awt.Frame parent, boolean modal) { super(parent, modal); initComponents(); } Ketik yang dicetak miring saja, yakni kode yang belum ada dalam program Anda (kode awal setelah form dibuat). 6. Tambahkan event Actionperformed pada tombol Connect… (bConnect), dengan cara klik kanan tombol Æ Event Æ Action Æ actionperformed, kemudian masukkan kode berikut. private void bConnectActionPerformed( java.awt.event.ActionEvent evt) { // TODO add your handling code here: blnIsConnected=false; String user= txt_user.getText(); String pwd = String.copyValueOf( txt_password.getPassword(),0, txt_password.getPassword().length); String host= txt_server.getText(); String db= txt_database.getText(); String urlValue=""; txt_status.setText("Terputus"); try { Class.forName("com.mysql.jdbc.Driver"); urlValue="jdbc:mysql://"+ host +"/"+ db +"?user=" + user + "&password="+ pwd; 37 ConnectionObj= DriverManager.getConnection(urlValue); } txt_status.setText("Terhubung (OK)"); blnIsConnected=true; catch (SQLException e){ txt_status.setText("koneksi gagal " + e.toString()); } catch(ClassNotFoundException e) { txt_status.setText( "jdbc.Driver tidak ditemukan"); } } if (blnIsConnected) JOptionPane.showMessageDialog( this, "Koneksi Sukse"); else JOptionPane.showMessageDialog( this, "Koneksi Gagal"); 7. Pasang Driver JDBC MySQL-nya. 8. Lakukan Clean And Build, jalankan program, klik tombol Connect.... Gambar 2.16 Tampilan Awal 38 Gambar 2.17 Pesan Koneksi Sukses Gambar 2.18 Tampilan Akhir 2.5 Mengimplementasikan Kelas Koneksi Dalam hal ini, implementasi yang dimaksudkan adalah memanfaatkan kelas Koneksi yang dibuat sebelumnya pada sebuah aplikasi. Untuk itu lakukan langkah-langkah berikut. 1. Buat sebuah aplikasi baru, menggunakan template dalam NetBeasn, yang sudah memiliki menu dan sebuah form about, melalui menu File Æ New Project, sehingga muncul jendela New Project. 39 Gambar 2.19 Memilih Java Desktop Application Pada jendela New Project, pilih Java pada kotak pilihan Categories. Pilih Java Desktop Application pada kotak pilihan Project. Klik tombol Next, sehingga muncul jendela New Desktop Application. Gambar 2.20 Jendela New Desktop Application 40 Pada jendela New Desktop Application, pilih Basic Application pada kotak pilihan Choose Application Shell, ketik Bab025 pada kotak masukan Project Name, klik Finish. Gambar 2.21 Hasil Template Desktop Application Project yang dihasilkan dari template Desktop Application, memiliki beberapa kelas, antara lain Bab025AboutBox.java, Bab025App.java, Bab025View.java. 2. Tambahkan kode program pada kelas Bab025App, sehingga menjadi seperti berikut. package bab025; import java.sql.Connection; import org.jdesktop.application.Application; import org.jdesktop.application.SingleFrameApplication; /** * The main class of the application. */ public class Bab025App extends SingleFrameApplication { private Connection ConnObj; public Connection getConnection(){ return ConnObj; } public void setConnection (Connection vConnection){ ConnObj = vConnection; } 41 Ketik yang dicetak miring, yakni kode yang belum ada sebelumnya. 3. Lakukan perubahan pada kelas Bab025View (form menu), tambahkan sebuah menu di bawah menu File. Pilih dan klik kanan menu File (fileMenu) pada desain form Æ Add From Palette Æ MenuItem. Setelah mengklik tambah menu item, di bawah menu File akan muncul menu baru. Ubah text dari menu baru tersebut menjadi DB Setting dan ubah variabel name-nya menjadi mnuDBSetting, melalui klik kanan Æ Change Variable Name. Gambar 2.22 Menu Baru DB Setting Untuk menaruh menu DB Setting pada posisi paling atas, bisa dilakukan dengan melakukan drag and drop (seret dan lepas) ke atas. 4. Pasang Library Driver MySQL. 5. Pasang library koneksi yang dibuat sebelumnya. Dalam jendela Project Properties pilih Libraries. Pada tab Compile klik tombol Add JAR/Folder, pilih JAR Koneksi dalam project sebelumnya (Bab024) pada folder <dist>, pilih Bab024.jar, terakhir klik tombol Open. 42 Gambar 2.24 Daftar Library 6. Masih dalam form menu, tambahkan event actionperformed pada menu DBSetting, dengan cara klik kanan menu DB Setting Æ Event Æ Action Æ actionperformed. Tambahkan kode program seperti berikut. private void mnuDBSettingActionPerformed( java.awt.event.ActionEvent evt) { // TODO add your handling code here: SettingUI frm = new SettingUI(null, true); Bab025App.getApplication().show(frm); if (frm.isConnected()) Bab025App.getApplication().setConnection( frm.getConnection()); } 7. Tambahkan dalam bagian import, seperti berikut: package bab025; import Koneksi.SettingUI; 8. Lakukan Cleand And Build. 43 Gambar 2.25 Ketika Program Dijalankan Pada saat program berjalan, pilih menu Æ DB Setting, sehingga muncul jendela Setting Database. Tekan Connect… dan perhatikan, sebuah instance Connection (kelas yang dipakai untuk koneksi dalam akses database) sudah terpasang dalam aplikasi. Selanjutnya untuk permintaan instance kelas Connection dapat dilakukan sewaktu-waktu, dengan cara memanggil metode Bab025App.getApplication().getConnection(). Jika koneksi menunjukkan kegagalan, kelas Koneksi tersebut akan menampilkan pesan kegagalan. Perlu diperiksa dahulu sebelum memperbaiki kesalahannya, kesalahan yang umum dialami adalah driver JDBC-nya. Pengembangan berikutnya, perlu dibuatkan untuk menyimpan konfigurasi koneksi (server, user, password, dan seterusnya) dalam sebuah media penyimpan agar User tidak perlu memasukkan parameter-parameter tersebut. Dalam hal ini biasanya data tersebut tidak disimpan dalam database, tetapi cukup disimpan dalam file eksternal (misal file .ini, .txt). Untuk melakukan hal tersebut, digunakan sebuah kelas tertentu. Namun, dalam bab ini tidak dibahas agar pokok bahasan dalam bab ini tetap fokus dan terstruktur. Akan tetapi, jangan khawatir karena hal itu akan dibahas pada trik rahasia selanjutnya. 44 2.6 Kelas Koneksi Reuseable Berikut trik membuat kelas koneksi yang lebih reuseable (bisa digunakan kembali dalam berbagai aplikasi), dengan penambahan beberapa properti dan metode yang bisa dipakai untuk mengendalikan perilaku kelas tersebut tanpa melalui mode grafik (form less), sehingga cukup menjadi kelas konfigurasi database, yang sewaktuwaktu bisa ditampilkan dalam mode grafik. Ikuti langkah-langkah berikut. 1. Buatlah project library seperti pada Bab024, beri nama project baru ini dengan nama Bab026. 2. Tambahkan juga JDialog Form dalam paket koneksi, beri nama SettingUI. 3. Pasang JDBC MySQL pada project ini. 4. Tambahkan objek-objek pada form SettingUI seperti pada project Bab024 sebelumnya. 5. Tambahkan kode program pada kelas SettingUI, pada bagian import seperti berikut. package koneksi; import java.sql.*; import javax.swing.JOptionPane; 6. Tambahkan kode pada kelas SettingUI, untuk properti dan metode, ketik di bawah baris: public class SettingUI extends javax.swing.JDialog{ Berikut ini kode yang diketikkan: private private private private String String String String jServer; jUser; jPassword; jDatabase; private Connection ConnectionObj; private boolean blnIsConnected=false; public void setServer(String value){ jServer=value; } public void setUser(String value){ jUser=value; 45 } public void setPassword(String value){ jPassword=value; } public void setDatabase(String value){ jDatabase=value; } public String getServer(){ return jServer; } public String getUser(){ return jUser; } public String getPassword(){ return jPassword; } public String getDatabase(){ return jDatabase; } public Connection getConnection(){ return ConnectionObj; } public boolean isConnected() { return blnIsConnected; } public boolean makeConnect(){ String urlValue=""; blnIsConnected=false; try { Class.forName("com.mysql.jdbc.Driver"); urlValue="jdbc:mysql://"+ jServer +"/"+ jDatabase +"?user=" + jUser + "&password="+ jPassword; } ConnectionObj= DriverManager.getConnection(urlValue); blnIsConnected=true; catch (SQLException e){ 46 } System.out.println("koneksi gagal " + e.toString()); catch(ClassNotFoundException e) { System.out.println( "jdbc.Driver tidak ditemukan"); } if (blnIsConnected==false) System.out.println("Koneksi Gagal"); } return blnIsConnected; 7. Tambahkan event actionperformed pada tombol Connect seperti berikut. private void bConnectActionPerformed( java.awt.event.ActionEvent evt) { // TODO add your handling code here: String user= txt_user.getText(); String pwd = String.copyValueOf( txt_password.getPassword(),0, txt_password.getPassword().length); String host= txt_server.getText(); String db= txt_database.getText(); jServer =host; jUser=user; jPassword=pwd; jDatabase=db; String urlValue=""; makeConnect(); if (blnIsConnected==true) txt_status.setText("Terhubung (OK)"); else txt_status.setText("koneksi gagal "); } if (blnIsConnected) JOptionPane.showMessageDialog(this, "Koneksi Sukses"); else JOptionPane.showMessageDialog(this, "Koneksi Gagal"); 47 8. Lakukan Clean and Build, jalankan project. Kelas ini bisa dipakai untuk melakukan koneksi, dengan menampilkan konfigurasi secara User Grafis Interface atau non-grafis. 9. Untuk membuat library dari kelas tersebut, bisa memanfaatkan file .Jar-nya, yang terletak pada <Project>\dist\ Bab026.jar. ooo0ooo 48