Download TRIK KONEKSI DATABASE

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
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