Cara Koneksi Database jdbc - PROGRAMMING LOGIC

Breaking

Friday 10 July 2015

Cara Koneksi Database jdbc

JDBC adalah Application Programming Interface (API) yang dirancang untuk mengakses database universal berdasarkan SQL. JDBC terdiri atsa JDBC 1.0 API yang memberika fingsi-fungsi dasar untuk akses data. JDBC 2.0 API memberikan tambahan ke fungsi-fungsi dasar dengan kelebihan-kelebihan lain yang lebih mutakhir.


JDBC API
JDBC adalah suatu nama trade mark, bukan sebuah singkatan. Tapi JDBC sering dikira singkatan dari Java Database Connectivity. JDBC API terdiri dari sejumlah class dan interface yang ditulis dalam bahasa Java yang menyediakan API standar sebagai alat bantu bagi pembuat program dan memberikan kemungkinan untuk menulis aplikasi database dengan menggunakan semua Java API.

JDBC API memudahkan untuk mengirim statement SQL ke sistem database relasional dan mendukung bermacam-macam bahasa SQL. Keunggulan JDBC API adalah sebuah aplikasi dapat mengakses sembarang sumber data dan dapat berjalan pada sembarang platform yang mempunyai Java Virtual Machine(JVM). Sehingga kita tidak perlu menulis satu program untuk mengakses database Sybase, Oracle atau Access dan lain-lain. Kita cukup menulis satu program yang menggunakan JDBC API, dan program dapat mengirimkan statement SQL atau statement lain ke sumber data tertentu. Dengan aplikasi yang ditulis dalam bahasa Java seseorang tidak perlu khawatir untuk menulis aplikasi yang berbeda-beda agar dapat berjalan pada platform yang berbeda-beda.


Apa yang dilakukan JDBC?
Teknologi JDBC mampu untuk melakukan tiga hal berikut:
1. Membangun sebuah koneksi ke sumber data (data source).
2. Mengirim statement ke sumber data.
3. Memproses hasil dari statement tersebut


Model 2-tier dan 3-tier
Untuk akses data base, JDBC API mendukung baik model 2-tier maupun 3-tier. Untuk model 2-tier, sebuah applet atau aplikasi java berbicara langsung ke database. Dalam hal ini diperlukan JDBC driver yang dapat berkomunikasi ke sumber data tersebut. Sebuah perintah atau statement dari user dikirim ke database dan hasil dari statement dikirim balik ke user. Database dapat terletak pada mesin yang sama atau berbeda dengan klien, yang disambungkan dengan jaringan. Jika letak database berbeda dengan mesin klien maka disebut dengan client/server. Mesin user disebut dengan client dan mesin dimana database berada disebut dengan server. Jaringan ini bisa berupa LAN atau internet.

Dalam model 3-tier, user mengirimkan perintah ke sebuah middle tier. Selanjutnya middle tier mengirimkan perintah tersebut ke database. Database memproses perintah tersebut dan mengirim balik hasilnya ke middle tier. Kemudian middle tier mengirimkannya ke user. Keuntungan model 3-tier ini adalah mempermudah aplikasi untuk dideploy dan meningkatkan performansi.



Tipe-tipe Driver JDBC
JDBC API terdiri atas dua interface utama, yang pertama yaitu JDBC API untuk penulis aplikasi, dan yang kedua yaitu lower-level JDBC driver API untuk penulis driver.

Teknologi driver JDBC dapat dibagi kedalam empat kategori:

1. JDBC-ODBC Bridge plus ODBC Driver
Kombinasi ini menghasilkan akses JDBC melalui driver ODBC. Menjembatani antara aplikasi Java dengan Microsoft ODBC. Tipe driver ini paling cocok untuk jaringan korporat dimana instalasi klien bukan masalah besar, atau untuk aplikasi server yang ditulis dalam bahasa Java dalam arsitertur 3-tier.

2. Native API party Java technology-enabled driver
Tipe driver ini mengkonversi JDBC call ke dalam client API untyk Oracle, Sybase, Informix, DB2, dan DBMS yang lain. Tipe ini memerlukan kode binary yang spesifik terhadap sistem operasi yang di-load kedalam masing-masing klien.

3.Pure Java Driver for Database Middleware (JDBC-Net)
Model driver ini menerjemahkan JDBC call kedalam protokol middleware vendor, yang kemudian diterjemahkan ke protokol DBMS oleh server middleware. Middleware menyediakan konektifitas ke berbagai jenis database yang berbeda.

4.Native-protocol Pure Java Driver
Model driver ini mengkonversi JDBC call langsung kedalam protokol network yang digunakan oleh DBMS, mengijinkan direct call dari mesin klien ke server DBMS dan memberikan solusi praktis untuk akses internet.

Tantangan dalam Mengakses DB
Tersedianya berbagai pilihan vendor di satu sisi membolehkan Anda untuk memilih produk RDBMS sesuai kebutuhan dan keadaan yang dihadapi. Di sisi lain, secara tradisional, ini merupakan tantangan tersendiri berkaitan dengan portabilitas kode program yang Anda kembangkan.
Misalkan Anda mengembangkan program dengan PHP yang semula dikembangkan untuk mengakses mySQL, maka apakah program Anda dapat kemudian dijalankan dengan database berbeda seperti Oracle, DB2 atau Postgress ? Pertanyaan yang serupa dapat ditanyakan untuk aplikasi yang Anda kembangkan dengan Visual Basic yang awalnya mengakses Microsoft SQL Server, atau dengan Borland C++ yang semula mengakses DB2.
Java memecahkan tantangan ini dengan mengenalkan apa yang dinamakan Java Database Connectivity, disingkat JDBC. JDBC adalah sebuah API yang menyediakan antar muka yang standar untuk berinteraksi dengan berbagai database. Program yang Anda kembangkan dengan JDBC untuk berinteraksi dengan mySQL, kini dapat Anda gunakan untuk berinteraksi dengan Postgress, Oracle, DB2, MS Access, ataupun MS SQL Server.
Bagaimana JDBC Bekerja ?
Kata kunci dari feature unggulan ini adalah JDBC driver. JDBC driver adalah driver yang dikembangkan untuk database vendor tertentu yang akan menerjemahkan perintah-perintah yang Anda tulis dalam bahasa Java, dengan JDBC, ke dalam perintah-perintah yang spesifik untuk sebuah database vendor. Dengan cara ini, dapat dikatakan bahwa program Anda dapat berinterkasi dengan database apapun yang tersedia JDBC drivernya.
Terdapat 4 tipe JDBC driver. Perbedaanya terletak pada apakah JDBC driver berhubungan dengan client-side native library yang disediakan oleh database vendor tertentu ataukah melalui protokol jaringan, dan terletak pada apakah JDBC driver ini vendor independent ataukah tidak.
Di mata programmer, perbedaan-perbedaan ini tidak berpengaruh terhadap kode-kode program Anda. Selama Anda mempunyai JDBC driver untuk sebuah database vendor pilihan Anda, Anda dapat mengembangkan program dalam bahasa Java untuk berinteraksi dengannya. Anda boleh tidak peduli dengan tipe berapakah JDBC driver Anda, dan sekali lagi, bahkan secara umum Anda boleh tidak peduli apakah database vendor Anda.
Bekerja dengan JDBC
Secara umum, untuk bekerja dengan JDBC, langkah yang dilakukan adalah :
1. Me-load JDBC Driver ke dalam JVM. JDBC Driver dapat dipandang sebagai library yang dibutuhkan untuk mengakses database tertentu.
2. Membuat koneksi ke DB yang direpresentasikan sebagai obyek java.sql.Connection.
3. Membuat obyek java.sql.Statement yang akan digunakan untuk mengirimkan perintah SQL ke DB.
4. Menjalankan metoda yang bersesuaian dari obyek java.sql.Statement, seperti executeQuery() atau executeUpdate().

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()
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 :
 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:://[Host][:Port]/?&

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”);
}

 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”);
}
 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: jdbc:odbc:Dbase
MySQL jdbc:mysql://:/ jdbc:mysql://localhost:3306/Dbase
PostgreSQL jdbc:postgresql://:/ jdbc:postgresql://localhost:5432/Dbase
Microsoft SQLServer jdbc:microsoft:sqlserver://:; DatabaseName= jdbc:microsoft:sqlserver://localhost:1433; DatabaseName=Dbase
Oracle jdbc:oracle:thin:@:: jdbc:oracle:thin:@localhost:1521:Dbase
IBM DB2
IBM 5100 jdbc:db2: 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 :
 Statement
Interface ini dibuat oleh methode Connection.createStatement(). Object Statement digunakan untuk pengiriman statement SQL tanpa parameter.

Statement stat = Connection.createStatement();

 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();

 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();