DATABASE (JDBC-ODBC)
JDBC : spesifikasi standar dari JavaSoft API
(Aplication Programming Interface) yang memungkinkan program Java untuk mengakses
sistem database manajemen
ODBC : protokol standard yang dapat menghubungkan segala
jenis database eksternal server atau file eksternal server
Persamaan JDBC-ODBC :
·
Java API
·
Interface Database
Perbedaan :
JDBC -> Disediakan oleh Java
ODBC -> Disediakan oleh Windows (SYSWOW)
sumber :
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
1. 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.
2. 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
|
3. 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
|
4. 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();
5. 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();
6. 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();
Tidak ada komentar:
Posting Komentar