Langkah-Langkah Pemrograman JDBC
Pada pemrograman Java dengan menggunakan JDBC,
ada beberapa langkah yang secara umum harus dilakukan sehingga aplikasi
tersebut dapat berinteraksi dengan database server.
Langkah-langkah untuk berinteraksi dengan
database server dengan menggunakan JDBC adalah sebagai berikut :
1. Mengimpor
package java.sql
2. Memanggil
Driver JDBC
3. Membangun
Koneksi
4. Membuat
Statement
5. Melakukan
Query
6. Memproses
Hasil
7. Menutup
Koneksi
8. Penanganan
Error
Mengimpor package java.sql
Pertama-tama yang harus dilakukan sebelum Anda
membuat program JDBC adalah mengimpor package java.sql terbih dahulu, karena di
dalam package java.sql tersebut terdapat kelas-kelas yang akan digunakan dalam
proses-proses berintekasi dengan database server misalnya kelas DriverMaganer,
Connection, dan ResultSet.
Hal ini sangat penting dilakukan karena bagi
pemula seringkali lupa untuk mengimpor package yang kelas-kelas yang akan
digunakan terdapat di dalamnya, sehingga mengakibatkan kegagalan dalam
mengkompile program Java.
Adapun listing untuk mengimpor package
java.sql adalah sebagai berikut :
Import java.sql.*;
Listing ini dituliskan sebelum Anda menulis
kelas.
Memanggil Driver JDBC
Langkah pertama untuk melakukan koneksi dengan
database server adalah dengan memanggil JDBC Driver dari database server yang
kita gunakan. Driver adalah library yang digunakan untuk berkomunikasi dengan
database server. Driver dari setiap database server berbeda-beda, sehingga Anda
harus menyesuaikan Driver JDBC sesuai dengan database server yang Anda gunakan.
Berikut ini adalah listing program untuk
memanggil driver JDBC.
Class.forName(namaDriver);
atau
Class.forName(namaDriver).newInstance();
Kedua cara di atas memiliki fungsi yang sama
yaitu melakukan registrasi class driver dan melakukan intansiasi. Apabila
driver yang dimaksud tidak ditemukan, maka program akan menghasilkan exception
berupa ClassNotFoundException. Untuk
menghasilkan exception apabila driver tidak ditemukan, maka diperlukan
penambahan try-catch. Adapun cara
menambahkan try-catch untuk
penanganan error apabila driver tidak ditemukan adalah sebagai berikut :
Try {
Class.forName(namaDriver);
} catch (ClassNotFoundException cnfe) {
... Penanganan Error ClassNotFoundException
}
Contoh listing memanggil driver untuk database
server menggunakan MySQL adalah :
try {
Class.forName(“com.mysql.jdbc.Driver”);
} catch (ClassNotFoundException cnfe) {
System.out.println(“Pesan Error : “ + cnfe)
}
Dari contoh listing di atas dapat dijelaskan
bahwa apabila driver yang dipanggil tidak ditemukan, maka program akan
menampilkan pesan pada consule dengan isi pesan adalah “Pesan Error : java.lang.ClassNotFoundException :
com.mysql.jdbc.Driver”. Penanganan error sangat penting dilakukan karena
dapat membantu kita dalam mengetahui kesalahan-kesalahan yang terjadi dalam
menjalankan program sehingga kita dapat mengatasi kesalahan-kesalahan tersebut.
Berikut ini adalah daftar nama-nama driver
dari beberapa database server yang sering digunakan.
Database
Server
|
Nama
Driver
|
JDBC-ODBC
|
sun.jdbc.odbc.JdbcOdbcDriver
|
MySQL
|
com.mysql.jdbc.Driver
|
PostgreSQL
|
org.postgresql.Driver
|
Microsoft
SQLServer
|
com.microsoft.jdbc.sqlserver.SQLServerDriver
|
Oracle
|
oracle.jdbc.driver.OracleDriver
|
IBM DB2
|
COM.ibm.db2.jdbc.app.DB2Driver
|
Membangun Koneksi
Setelah melakukan pemanggilan terhadap driver
JDBC, langkah selanjutnya adalah membangun koneksi dengan menggunakan interface
Connection. Object Connection yang
dibuat untuk membangun koneksi dengan database server tidak dengan cara membuat
object baru dari interface Connection melainkan dari class DriverManager dengan menggunakan methode getConnection().
Connection koneksi =
DriverManager.getConnection(<argumen>)
Untuk menangani error yang mungkin terjadi
pada proses melakukan koneksi dengan database maka ditambahkan try-catch.
Exception yang akan dihasilkan pada proses ini adalah berupa SQLException.
Adapun cara penulisan listingnya adalah sebagai berikut :
try {
... koneksi database
} catch (SQLException sqle){
... penanganan error koneksi
}
Ada beberapa macam argumen yang berbeda dari
methode getConnection() yang dipanggil dari DriverManager, yaitu :
n getConnection(String url)
Pada methode kita hanya memerlukan
argumen URL, sedangkan untuk data user dan password sudah diikutkan secara
langsung pada URL sehingga tidak perlu lagi secara terpisah mendefinisikan data
user dan password.
Adapun penulisan nilai URL dari methode
getConnection(String url) adalah sebagai berikut :
jdbc:<DBServer>://[Host][:Port]/<namaDB>?<user=User>&<password=Pasword>
Misalkan kita menggunakan database
server berupa MySQL dengan
spesifikasi menggunakan host adalah localhost
dan port default (3306), nama
database adalah Database, nama user
adalah adi, dan password adalah purnomo. Maka penulisan URL adalah sebagai berikut
:
jdbc:mysql://localhost:3306/Dbase?user=adi&password=pasw
Berikut ini contoh penggunaan methode
ini didalam program :
try {
String url =
“jdbc:mysql://localhost:3306/Dbase? user=adi&password=pas”;
Connection koneksi =
DriverManager.getConnection(url);
System.out.prinln(“Proses apabila koneksi
sukses”);
} catch (SQLException sqle) {
System.out.println(“Proses apabila koneksi
gagal dilakukan”);
}
n getConnection(String url,
Properties info)
Pada methode ini memerlukan URL dan sebuah object Properties. Sebelum menggunakan methode
ini, Anda harus melakukan import package berupa java.util.*, ini dikarenakan object Properties terdapat pada
package tersebut. Object Properties berisikan spesifikasi dari setiap parameter
database misalnya user name, password, autocommit, dan sebagainya.
Berikut ini contoh penggunaan methode
ini didalam program :
try {
String url =
“jdbc:mysql://localhost:3306/Dbase”;
Properties prop = new java.util.Properties();
// tidak mengimpor kelas
prop.put(“user”,”NamaUser”);
prop.put(“password”,”datapassword”);
Connection koneksi =
DriverManager.getConnection(url, prop);
System.out.prinln(“Proses apabila koneksi
sukses”);
} catch (SQLException sqle) {
System.out.println(“Proses apabila koneksi
gagal dilakukan”);
}
n getConnection(String url,
String user, String password)
Pada methode ini memerlukan argumen
berupa URL, user name, dan password.
Methode ini secara langsung mendefinisikan nilai URL, user name dan password.
Berikut ini contoh penggunaan methode
ini didalam program :
try {
String url = “jdbc:mysql://localhost:3306/Dbase”;
String user = “adi”
String password “ternate”
Connection koneksi =
DriverManager.getConnection(url, user, password);
System.out.prinln(“Proses apabila koneksi
sukses”);
} catch (SQLException sqle) {
System.out.println(“Proses apabila koneksi
gagal dilakukan”);
}
Berikut ini adalah daftar penulisan URL dari
beberapa database server yang sering digunakan.
Database
Server
|
Nama URL
|
Contoh
penggunaan
|
JDBC-ODBC
|
jdbc:odbc:<NamaDatabase>
|
jdbc:odbc:Dbase
|
MySQL
|
jdbc:mysql://<nmHost>:<port>/<nmDB>
|
jdbc:mysql://localhost:3306/Dbase
|
PostgreSQL
|
jdbc:postgresql://<nmHost>:<port>/<nmDB>
|
jdbc:postgresql://localhost:5432/Dbase
|
Microsoft SQLServer
|
jdbc:microsoft:sqlserver://<nmHost>:<port>;
DatabaseName=<namaDatabase>
|
jdbc:microsoft:sqlserver://localhost:1433;
DatabaseName=Dbase
|
Oracle
|
jdbc:oracle:thin:@<nmHost>:<port>:<nmDB>
|
jdbc:oracle:thin:@localhost:1521:Dbase
|
IBM DB2
|
jdbc:db2:<NamaDatabase>
|
jdbc:db2:Dbase
|
Membuat Object Statement
JDBC API menyediakan interface yang berfungsi
untuk melakukan proses pengiriman statement SQL yang terdapat pada package
java.sql. Di dalam JDBC API disediakan tiga buah interface untuk fungsi
tersebut yaitu :
n Statement
Interface ini dibuat oleh methode Connection.createStatement(). Object
Statement digunakan untuk pengiriman statement SQL tanpa parameter.
Statement stat = Connection.createStatement();
n PreparedStatement
Interface ini dibuat oleh methode Connection.prepareStatement(). Object
PreparedStatement digunakan untuk pengiriman statement SQL dengan atau tanpa
parameter. Dengan object ini, kita dapat menampung satu atau lebih parameter
sebagai argumen input (perameter IN). Interface ini memiliki performa lebih
baik dibandingkan dengan interface Statement karena dapat menjalankan beberapa
proses dalam sekali pengiriman perintah SQL.
PreparedStatement stat =
Connection.prepareStatement();
n CallableStatement
Interface ini dibuat oleh methode Connection.prepareCall(). Object
CallableStatement digunakan untuk menjalankan store procedure SQL.
CallableStatement stat =
Connection.prepareCall();
Melakukan Eksekusi Perintah SQL
Setelah kita memiliki object statement, kita
dapat menggunakannya untuk melakukan pengiriman perintah SQL dan
mengeksekusinya. Methode eksekusi yang digunakan untuk perintah SQL terbagi
menjadi dua bagian yaitu untuk perintah SELECT methode eksekusi yang digunakan
adalah executeQery() dengan nilai kembaliannya adalah ResultSet, dan untuk
perintah INSERT, UPDATE, DELETE methode eksekusi yang digunakan adalah
executeUpdate().
Berikut ini adalah contoh melakukan eksekusi
perintah SQL dan mengambil hasilnya (ResultSet) dengan menggunakan perintah
SELECT.
String sql = “SELECT kode, nama, alamat, kelas
FROM dataSiswa”;
ResultSet set = stat.executeQuery(sql);
while (set.next()) {
String kode = set.getString("kode");
String nama = set.getString("nama");
String alamat = set.getString("alamat");
String kelas = set.getString("kelas");
}
Berikut ini adalah contoh melakukan eksekusi
perintah SQL dengan menggunakan perintah DELETE.
String sql = "DELETE FROM data_siswa WHERE
kode = “1234”;
PreparedStatement stat =
konek.prepareStatement(sql);
stat.executeUpdate();
Menutup Koneksi
Penutupan terhadap koneksi database perlu
dilakukan agar sumber daya yang digunakan oleh object Connection dapat
digunakan lagi oleh proses atau program yang lain.
Sebelum kita menutup koneksi database, kita
perlu melepas object Statement dengan kode sebagai berikut :
statement.close();
Untuk menutup koneksi dengan database server
dapat kita lakukan dengan kode sebagai berikut :
connection.close();