Dalam pemrograman Java dengan menggunakan JDBC, ada beberapa langkah yang secara umum harus dilakukan agar aplikasi tersebut dapat berinteraksi dengan server database.
Langkah-langkah untuk berinteraksi dengan server basis data menggunakan JDBC adalah sebagai berikut:
Mengimpor package java.sql
2. Memanggil Driver JDBC
3. Membangun Koneksi
4. Membuat Pernyataan
5. Melakukan Kueri
6. Memproses Hasil
7. Menutup Koneksi
8. Penanganan Kesalahan
Mengimpor paket java.sql
Hal pertama yang harus dilakukan sebelum Anda membuat program JDBC adalah mengimpor paket java.sql terlebih dahulu, karena di dalam paket java.sql tersebut terdapat kelas-kelas yang akan digunakan dalam proses interaksi dengan server database, misalnya kelas DriverManager, Connection, dan ResultSet.
Ini sangat penting karena pemula sering lupa mengimpor paket yang berisi kelas-kelas yang akan digunakan, yang mengakibatkan kegagalan dalam mengkompilasi program Java.
Adapun daftar untuk mengimpor package java.sql adalah sebagai berikut:
Impor java.sql.*;
Daftar ini ditulis sebelum Anda menulis kelas.
Memanggil Driver JDBC
Langkah pertama untuk membuat koneksi dengan server basis data adalah dengan memanggil JDBC Driver dari basis data server yang kita gunakan. Driver adalah pustaka yang digunakan untuk berkomunikasi dengan server basis data. Driver dari setiap server basis data berbeda-beda, sehingga Anda harus menyesuaikan JDBC Driver dengan server basis data yang Anda gunakan.
Berikut ini adalah daftar 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 instansiasi. Apabila driver yang dimaksud tidak ditemukan, maka program akan menghasilkan exception berupa ClassNotFoundException. Untuk menghasilkan exception apabila driver tidak ditemukan, maka diperlukan penambahan coba-tangkap. Adapun cara menambahkan coba-tangkap Untuk penanganan error apabila driver tidak ditemukan adalah sebagai berikut :
Coba
Class.forName(namaDriver);
} tangkap (ClassNotFoundException cnfe) {
Penanganan Error ClassNotFoundException
}
Contoh listing yang memanggil driver untuk server database menggunakan MySQL adalah:
coba {
Class.forName(“com.mysql.jdbc.Driver”);
} tangkap (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 konsol dengan isi pesan adalah “Pesan Kesalahan: 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.
| Server Basis Data | Nama Pengemudi |
|
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 memanggil driver JDBC, langkah selanjutnya adalah membangun koneksi menggunakan antarmuka Koneksi. Object Connection yang dibuat untuk membangun koneksi dengan server database tidak dibuat dengan cara membuat objek baru dari antarmuka Connection, melainkan dari kelas tersebut. Pengelola Driver dengan menggunakan metode getConnection().
Koneksi koneksi = DriverManager.getConnection()
Untuk menangani error yang mungkin terjadi pada proses melakukan koneksi dengan database, maka ditambahkan blok try-catch. Exception yang akan dihasilkan pada proses ini adalah berupa SQLException. Adapun cara penulisan listingnya adalah sebagai berikut:
coba {
... koneksi basis data
} tangkap (SQLException sqle){
… penanganan kesalahan koneksi
}
Ada beberapa macam argumen yang berbeda dari metode `getConnection()` yang dipanggil dari `DriverManager`, yaitu :
n getConnection(String url)
Pada metode ini, kita hanya memerlukan argumen URL, sedangkan untuk data pengguna dan kata sandi sudah disertakan langsung pada URL sehingga tidak perlu lagi mendefinisikan data pengguna dan kata sandi secara terpisah.
Adapun penulisan nilai URL dari metode getConnection(String url) adalah sebagai berikut :
jdbc:://[Host][:Port]/?user=&password=
Misalkan kita menggunakan server database berupa MySQL dengan spesifikasi menggunakan host adalah localhost/webti dan port default (3306), nama database adalah Basis data, nama pengguna adalah Adi, dan kata sandi adalah Purnomo. Maka penulisan URL adalah sebagai berikut :
jdbc:mysql://localhost/webti:3306/Dbase?user=adi&password=pasw
Berikut ini contoh penggunaan metode ini di dalam program:
coba {
String url = “jdbc:mysql://localhost/webti:3306/Dbase? user=adi&password=pas”;
Koneksi koneksi = DriverManager.getConnection(url);
System.out.println(“Proses jika koneksi berhasil”);
} tangkap (SQLException sqle) {
System.out.println(“Proses apabila koneksi gagal dilakukan”);
}
n getConnection(String url, Properrti info)
Pada metode ini memerlukan URL dan sebuah objek Properti. Sebelum menggunakan metode ini, Anda harus melakukan impor paket 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 metode ini di dalam program:
coba {
String url = “jdbc:mysql://localhost/webti:3306/Dbase”;
Properties prop = new java.util.Properties(); // tidak mengimpor kelas
prop.put(“user”,”NamaUser”);
prop.put(“password”,”datapassword”);
Koneksi koneksi = DriverManager.getConnection(url, prop);
System.out.println(“Proses jika koneksi berhasil”);
} tangkap (SQLException sqle) {
System.out.println(“Proses apabila koneksi gagal dilakukan”);
}
n getConnection(String url, String user, String password)
Pada metode ini memerlukan argumen berupa URL, nama pengguna, dan kata sandi. Metode ini secara langsung mendefinisikan nilai URL, nama pengguna, dan kata sandi.
Berikut ini contoh penggunaan metode ini di dalam program:
coba {
String url = “jdbc:mysql://localhost/webti:3306/Dbase”;
String pengguna = “adi”
Kata sandi string “ternate”
Koneksi koneksi = DriverManager.getConnection(url, user, password);
System.out.println(“Proses jika koneksi berhasil”);
} tangkap (SQLException sqle) {
System.out.println(“Proses apabila koneksi gagal dilakukan”);
}
Berikut ini adalah daftar penulisan URL dari beberapa database server yang sering digunakan.
| Server Basis Data | Nama URL | Contoh penggunaan |
|
JDBC-ODBC |
jdbc:odbc: |
jdbc:odbc:Dbase |
|
MySQL |
jdbc:mysql://:/ |
jdbc:mysql://localhost/webti:3306/Dbase |
|
PostgreSQL |
jdbc:postgresql://:/ |
jdbc:postgresql://localhost/webti:5432/Dbase |
|
Microsoft SQLServer |
jdbc:microsoft:sqlserver://:; DatabaseName= |
jdbc:microsoft:sqlserver://localhost/webti:1433; NamaDatabase=Dbase |
|
Oracle |
jdbc:oracle:thin:@:: |
jdbc:oracle:thin:@localhost/webti:1521:Dbase |
|
IBM DB2 |
jdbc:db2: |
jdbc:db2:Dbase |
Membuat Pernyataan Objek
API JDBC menyediakan antarmuka yang berfungsi untuk melakukan proses pengiriman pernyataan SQL yang terdapat dalam paket java.sql. Di dalam API JDBC disediakan tiga buah antarmuka untuk fungsi tersebut yaitu:
n Pernyataan
Antarmuka ini dibuat dengan metode Connection.createStatement(). . Pernyataan Objek digunakan untuk mengirimkan pernyataan SQL tanpa parameter.
Statement stat = Connection.createStatement();
n PreparedStatement
Antarmuka ini dibuat dengan metode Connection.prepareStatement(). Objek PreparedStatement digunakan untuk pengiriman pernyataan SQL dengan atau tanpa parameter. Dengan objek ini, kita dapat menampung satu atau lebih parameter sebagai argumen input (parameter IN). Antarmuka ini memiliki kinerja lebih baik dibandingkan dengan antarmuka Statement karena dapat menjalankan beberapa proses dalam sekali pengiriman perintah SQL.
PreparedStatement stat = Connection.prepareStatement();
n Pernyataan yang Dapat Dipanggil
Antarmuka ini dibuat dengan metode Connection.prepareCall(). Objek CallableStatement digunakan untuk menjalankan store procedure SQL.
CallableStatement stat = Connection.prepareCall();
Melaksanakan Perintah SQL
Setelah kita memiliki objek statement, kita dapat menggunakannya untuk melakukan pengiriman perintah SQL dan mengeksekusinya. Metode eksekusi yang digunakan untuk perintah SQL terbagi menjadi dua bagian yaitu untuk perintah SELECT metode eksekusi yang digunakan adalah executeQuery() dengan nilai kembaliannya adalah ResultSet, dan untuk perintah INSERT, UPDATE, DELETE metode 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);
sementara (set.next()) {
String kode = rs.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 objek 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:
koneksi.tutup();
