Modul V Aplikasi Basis Data
Modul V Aplikasi Basis Data
A. Tujuan 1. Mahasiswa mampu membuat aplikasi basis data sederhana menggunakan JSP. B. Ringkasan Teori JDBC Java menyediakan standard API untuk mengakses database yang disebut Java Database Connectivity (JDBC) API. Dengan menggunakan ini, para pengembang memungkinkan dapat mengakses database tanpa memperdulikan vendornya; para vendor menyediakan implementasi untuk abstract interfaces yang dijelaskan didalam API, penyediaan tersebut sama dengan set dari kemampuan koneksi untuk para pengembang. Berikut ini merupakan class kunci dari JDBC API, semuanya akan dijelaskan secara detail kemudian : 1 java.sql.Connection membuat sebuah koneksi dengan database. Secara abstrak memberikan detail dari bagaimana cara untuk berkomunikasi dengan database server. 2 java.sql.DriverManager mengatur JDBC driver yang digunakan oleh aplikasi. Pada hubungannya dengan proper driver URL dan proper authentication, dapat menyediakan aplikasi dengan valid instances dari object koneksi. 3 javax.sql.DataSource memisahakan detail (URL, authentication details) dari bagaimana untuk memperoleh sebuah koneksi ke database. Merupakan method terbaru dan yang lebih disukai dari obtaining Connection objects. 4 java.sql.Statement menyediakan method untuk para pengembang dalam mengeksekusi pernyataan SQL. 5 java.sql.ResultSet menyediakan hasil dari sebuah pernyataan SQL. Objects ini sering dikembalikan dari method yang terletak pada Statement object. java.sql.DriverManager Dengan menggunakan class ini, pengembang dapat meretrieve sebuah Connection object yang kemudian dapat dia gunakan untuk melakukan aktifitas database. Berikut ini dua langkah yang dianjurkan: 1 Pertama, JDBC driver harus diregistrasi dengan DriverManager. Hal ini dapat dikerjakan dengan menggunakan method Class.forName untuk menge-load driver's class definition kedalam memori. 2 Kedua, menggunakan method getConnection pada DriverManagerm untuk menyediakan JDBC URL, sebaik username dan password supplying untuk akses database. URL harus mengikuti syntax yang dianjurkan oleh implementasi database tertentu.
Dibawah ini adalah contoh dari bagaimana mendapatkan koneksi dari database PostgreSQL. Sekali lagi, URL dan driver tepat untuk implementasi database yang digunakan. Untuk database yang lain, periksalah dokumen yang disediakan. String jdbcURL = "jdbc:postgresql://localhost:5432/jeni-db"; String user = "jeni"; String password = "j3n1master"; Connection conn = null; try { Class.forName("org.postgresql.Driver"); conn = DriverManager.getConnection(url, user, password); ... } catch (SQLException e) { // perform error handling here } Saat ini merupakan cara yang valid dari meretrieve sebuah Connection object, method ini menganjurkan para pengembang untuk tetap mengikuti method tersebut dari seperti detail sebagai driver class name, URL dianjurkan untuk akses ke database, sedangkan username dan password tepat untuk penggunaan database. Detail-detail ini paling banyak dipakai pada berbagai aplikasi. Dan juga, mengatur URL dan driver name pada kode membuatnya lebih sulit untuk aplikasi dalam menukar implementasi database, jika hal itu diperlukan. javax.sql.DataSource DataSource merupakan interface yang digambarkan pada JDBC API sejak versi 2 dari spesifikasinya. Sekarang saatnya direkomendasikan untuk para pengembang dalam mendapatkan Connection object. Retrieval dari Connection object terjadi secara langsung : cara sederhana memanggil method getConnection() dalam kejadian yang valid dari DataSource. Hal tersebut memperoleh sebuah kejadian dari DataSource yang sekarang dapat menyelesaikan sebuah masalah untuk beberapa pengembang(developer). Sejak DataSource merupakan sebuah interface, sebuah instance tidak dapat dibuat oleh pengembang dengan menggunakan operator yang baru secara sederhana. Hal tersebut direkomendasikan jika kita memilih aplikasi server dengan menggunakan aturan pembuatan dari DataSource objects untuk kita. java.sql.Connection / java.sql.Statement java.sql.Connection objects menghadirkan connections yang nyata ke database. Sekali kita mempunyai sebuah instance dari object ini, kita dapat membuat sebuah instance Statement object, dimana kemudian kita dapat menggunakan query SQL. Statement object menyediakan beberapa method untuk mengekskusi query SQL. Dua method yang sering digunakan adalah: executeQuery - menggunakan pernyataan SELECT dan mengembalikan
hasil dari operasi sebagai ResultSet object. executeUpdate menggunakan pernyataan INSERT, UPDATE atau DELETE dan mengembalikan jumlah dari baris yang diperngaruhi sebagai integer primitive. Dibawah ini adalah bagian dari contoh kode outlining prosedur, bersama dengan beberapa error yang sangat dasar mengani prosedur.
Context ctxt = null; DataSource ds = null; Connection conn = null; Statement stmt = null; ResultSet rs = null; try { ctxt = new InitialContext(); ds = (DataSource)ctxt.lookup("jdbc/PostgreSQLDS"); conn = ds.getConnection(); stmt = conn.createStatement(); rs = stmt.executeQuery(Select * from users); } catch (SQLException e){ System.out.println(e.getMessage()); } }
java.sql.ResultSet Sebuah objek ResultSet merupakan hasil sebuah query pada suatu basis data. Untuk iterasi diatas baris yang diarahkan pada ResultSet, telah disediakan method next(). Pemanggilan method next() akan memindahkan internal pointer menjaga ResultSet Objek ke point baris berikutnya. Method ini mengembalikan nilai true jika ditemukan baris berikutnya, dan nilai false jika tidak ada baris berikutnya.
while (rs.next()) { //membaca data dari baris sebelum disini }
1 Ringkasan operasi pada basis data: Memperoleh sebuah Connection baik menggunakan DrierManager atau dari DataSource. Membuat sebuah Statement object menggunakan method createStatement() yang tersedia pada Connection object. Melakukan query SQL menggunakan Statement object dan retrieve results. Jika hasil dari query adalah resultset, gunakan method next() untuk mengambil/meretrieve data. Menutup semua databaseyang berhubungan dengan object.
Prosedur Dasar Koneksi ke Basis Data 1. Tambahkan driver JDBC ke aplikasi. 2. Definisikan koneksi ke basis data dengan URL atau nomor IP. 3. Buat koneksi. 4. Buat objek statemen. 5. Eksekusi query. 6. Proses hasil eksekusi. 7. Tutup koneksi.
C. Langkah Percobaan 1. Koneksikan komputer anda ke server Basis Data yang biasa anda gunakan untuk praktikum basis data. Gunakan SQLYog. 2. Buatlah sebuah tabel: User dengan field: userName : varchar(20) emailAddress : varchar(50) birthDate : date 3. Isi tabel Pegawai dengan data sbb: userName emailAddress birthDate ANI [email protected] 1989-1-1 INA [email protected] 1990-1-1 4. 5. 6. 7. 8. 9. Panggil program netbeans. Buat project baru, pilih kategori: web, jenis project: web application. Beri nama project: aplikasi_JSP_JavaBean. Tidak usah gunakan frameworks. Arahkan kursor pada Source Packages. Buat folder baru dengan nama bean. Arahkan kursor pada folder bean. Buat kelas java dengan nama kelas DataBaseConnection. Ketikkan listing program seperti di bawah ini.
package bean; import java.sql.*; /** * * @author Puspaningtyas */ public class DataBaseConnection { // Sesuaikan properti jdbcURL dengan basis data anda private String jdbcURL = "jdbc:mysql://localhost:3306/aplikasijsp"; private String user = "root"; private String password = ""; private Connection connection = null; /** Creates a new instance of UserConnection */ public DataBaseConnection() {
try { Class.forName("org.gjt.mm.mysql.Driver"); connection = DriverManager.getConnection(jdbcURL, user, password); System.out.println("koneksi berhasil"); } catch (Exception ex) { System.out.println("message: " + ex.getMessage()); }
public boolean isConnected(){ if (connection!=null) return true; else return false; } public boolean getClosed(){ if(isConnected()){ try { connection.close(); connection=null; } catch (SQLException ex) { ex.printStackTrace(); } return true; } else return false; } public String getJdbcURL() { return jdbcURL; } public void setJdbcURL(String jdbcURL) { this.jdbcURL = jdbcURL; } public String getUser() { return user; } public void setUser(String user) { this.user = user; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public Connection getConnection() { return connection; } public void setConn(Connection connection) {
} }
this.connection = connection;
10. Ujilah bean yang anda buat dengan menambah dan mengeksekusi fungsi main().
public static void main(String args[]){ DataBaseConnection conn = new DataBaseConnection(); try{ String query="select * from user"; Statement statement = conn.getConnection().createStatement(); ResultSet result = statement.executeQuery(query); while (result.next()){ System.out.println("userName : "+result.getString("userName")); System.out.println("emailAddress : "+result.getString("emailAddress")); } statement.close(); } catch(Exception ex){ System.out.println("message: "+ex.getMessage()); } }
11. Buat file baru dengan tipe JSP, beri nama userReport.jsp. Isi file-nya seperti di bawah ini. Eksekusi file-nya.
<% bean.DataBaseConnection conn = new bean.DataBaseConnection(); %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Report Page</title> </head> <body> <h1>Report Page</h1> <% try{ String query="select * from user"; java.sql.Statement statement = conn.getConnection().createStatement(); java.sql.ResultSet result = statement.executeQuery(query); while (result.next()){ out.println("userName : "+result.getString("userName") +"<br>"); out.println("emailAddress :
D. Tugas 1. Buat suatu page JSP untuk menerima masukan nama, tanggal lahir dan alamat email. Sebagai catatan, gunakan perintah executeUpdate() untuk mengeksekusi perintah insert baris baru pada tabel basis data. 2. Buat perintah untuk mencari suatu nama yang ada dalam database tersebut (misalnya ANI ) 3. Buat perintah untuk menghapus data ANI tersebut.. E Tambahan 1. Cari email INA, update imail tersebut dengan [email protected] 2. Buat keluaran hasil query dalam percobaan dalam sebuah tabel .................