MODUL KULIAH KELAS KARYAWAN – STTI NIIT I-TECH Mata Kuliah Pemrograman Berorientasi Object Lanjut Semester Genap 2012/2013 Kelas Karyawan Dosen Muhammad Bagir MTI Pertemuan : 5(Lima) Waktu : Minggu, 24 Maret 2013 Modul 5(Lima) Topik J2EE(JSP) Sub Topik Operasi Database dengan JDBC Materi Tujuan - Membuat Database dan Tabel - Memasukkan Data Menggunakan JDBC 1. Mahasiswa dapat membuat Database dan Tabel pada Aplikasi Database 2. Mahasiswa dapat melakukan proses input data ke dalam tabel database @copyright 2013, Muhammad Bagir, MTI. Modul Perkuliahan Pemrograman Berorientasi Object Lanjut, STTI I-Tech Semester Genap 2012-2013 1. JDBC (Java Database Connectivity) Java Database Connectivity (JDBC) dibangun sepenuhnya dengan Java API sehingga dapat dipakai cross platform. Dengan JDBC API database dapat diakses dari vendor-vendor server database seperti Oracle, Sybase, SQL Server, MySQL dan lainnya. Hal yang sangat penting dalam membangun koneksi antara Java dan Database adalah sejumlah interface yang ada dalam paket java.sql, maka dapat dilakukan import paket java.sql.* Class dan Interface yang mutlak harus digunakan ketika membangun koneksi java-database, yaitu : - Connection Untuk mendefinisikan koneksi ke database. Clas yang digunakan adalah DriverManager dan metodenya getConnection(). Interface java.sql.Connection digunakan untuk membentuk koneksi ke database serta mengatur hubungan tersebut, seperti commit, rollback atau menyiapkan (Prepared)SQLStatement. Method void Keterangan close() throws Memutuskan hubungan dengan JDBC ResourceException Statement createStatement() Membuat objek SQL Statement untuk dikirim ke throws SQLException database PreparedStatement Membuat objek PrepareSQL Statement yang prepareStatement(String) dapat dieksekusi berulang-ulang throws SQLException void commit() throws Memastikan perubahan permanen throws Membatalkan SQLException void rollback() SQLException - semua perubahan serta melepaskan semua locking Driver Untuk mendefinisikan driver yang digunakan untuk melakukan koneksi ke suatu database. Class java.sql.DriverManager digunakan untuk loading dan mengatur driver JDBC serta membuat koneksi ke database. Untuk melakukan Load Class.forName() terhadap , driver sedangkan dapat untuk menggunakan melakukan koneksi metode dapat menggunakan metode getConnection() @copyright 2013, Muhammad Bagir, MTI. Modul Perkuliahan Pemrograman Berorientasi Object Lanjut, STTI I-Tech Semester Genap 2012-2013 - Statement Untuk mendefinisikan statement SQL. Interface java.sql.Statement dapat digunakan.Objek statement dapat dibuat dari objek connection denga menggunakan metode Connection.createStatement() - ResultSet Untuk memperoleh hasil pengaksesan data tabel yang diperoleh dari database dapat digunakan ResultSet. Perintah kueqi yang digunakan umumnya adalah select ke dalam database dan hasilnya berupa ResultSet yaitu baris-baris data hasil dari kueri, ada banyak metode dalam ResultSet seperti sbb: boolean getBoolean(int colIndex) Date getDate(String colName) String getString(String colName) 2. Implementasi Koneksi Database Untuk melakukan implementasi koneksi ke database, akan digunakan aplikasi yang pernah dibuat pada modul sebelumnya, yakni aplikasi MembuatSistemInformasi. Untuk itu akan dimulai pembuatan database pada Aplikasi database MySQL menggunakan Halaman Interface PHPMyAdmin. Buatlah Sebuah Database dengan nama “SimSekolah” Bukalah halaman JSP pada IDE NetBeans, buatlah folder db dan file koneksi.jsp, lalu lakukan pengkodean koneksi JDBC ke MySQL sebagai berikut : <%-Document : koneksi Created on : Mar 20, 2013, 11:29:53 AM Author : bagir @copyright 2013, Muhammad Bagir, MTI. Modul Perkuliahan Pemrograman Berorientasi Object Lanjut, STTI I-Tech Semester Genap 2012-2013 --%> <%@page import="java.sql.SQLException"%> <%@page import="java.sql.Connection"%> <%@page import="java.sql.DriverManager"%> <%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Percobaan Koneksi</title> </head> <body> <% try{ Class.forName("com.mysql.jdbc.Driver"); String url = "jdbc:mysql://localhost:3306/simsekolah"; Connection koneksi = DriverManager.getConnection(url,"root",""); out.print("Koneksi sukses"); } catch(ClassNotFoundException e) { out.println("Kelas tidak ditemukan"); } %> </body> </html> @copyright 2013, Muhammad Bagir, MTI. Modul Perkuliahan Pemrograman Berorientasi Object Lanjut, STTI I-Tech Semester Genap 2012-2013 Kode tersebut digunakan untuk melakukan koneksi ke database mysql yang telah dibuat sebelumnya. Untuk menguji kebenaran kode diatas cobalah jalankan url file tersebut menggunakan browser sehingga hasilnya tampak seperti gambar dibawah ini : Jika koneksi anda tidak berhasil karena kelas tidak ditemukan artinya harus dilakukan instalasi driver dev.mysql.com/downloads/ JDBC yang dapat didownload pada link kemudian pilihlah Connector/j untuk koneksi menggunakan JDBC. 3. Menambahkan Proses Input Data Registrasi Untuk dapat menambahkan proses input data registrasi, terlebih dahulu tambahkan tabel ke dalam database simpelanggan dengan ketentuan seperti gambar user interface dibawah ini : Pastikan noident sebagai primary key. @copyright 2013, Muhammad Bagir, MTI. Modul Perkuliahan Pemrograman Berorientasi Object Lanjut, STTI I-Tech Semester Genap 2012-2013 Setelah berhasil membuat tabel, maka tahapan berikutnya adalah menambahkan modul penginputan data pada jsp, dengan menambahkan kode dibawah ini pada file prosesInputData.jsp, sehingga halaman prosesInputData.jsp menjadi sbb : <%@page import="java.sql.DriverManager"%> <%@page import="java.sql.Connection"%> <%@page import="java.sql.Statement"%> <%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> </head> <body> <% String noIdentitas = request.getParameter("noident"); String jenisIdentitas = request.getParameter("jnsident"); String nama = request.getParameter("nama"); String alamat=request.getParameter("alamat"); String kelamin=request.getParameter("kelamin"); String tempatLahir = request.getParameter("tempatlahir"); String tanggal = request.getParameter("tanggal"); String bulan = request.getParameter("bulan"); String tahun = request.getParameter("tahun"); %> No Identitas : <%=noIdentitas%><br/> Jenis Identitas : <%=jenisIdentitas%><br/> Nama : <%=nama%><br/> Alamat : <%=alamat%><br/> Jenis Kelamin : <%=kelamin%><br/> Tempat Lahir : <%=tempatLahir%><br/> Tanggal Lahir : <%=tanggal%>-<%=bulan%>-<%=tahun%> @copyright 2013, Muhammad Bagir, MTI. Modul Perkuliahan Pemrograman Berorientasi Object Lanjut, STTI I-Tech Semester Genap 2012-2013 <% try{ Class.forName("com.mysql.jdbc.Driver"); String url = "jdbc:mysql://localhost:3306/simsekolah"; Connection koneksi = DriverManager.getConnection(url,"root",""); Statement stmt = koneksi.createStatement(); String kueri = "insert DataPelanggan (noident,jnsident,nama,alamat,jnskelamin,tmptlahir,tgllahir) values('"+noIdentitas+"','"+jenisIdentitas+"','"+nama+"','"+ alamat+"','"+kelamin+"','"+tempatLahir+"','"+ tahun+"- "+bulan+"-"+tanggal+"')"; int hasil = stmt.executeUpdate(kueri); if(hasil==1) { out.println("<br/>Data Telah dimasukkan"); } else { out.println("<br/>Data gagal dimasukkan"); } koneksi.close(); } catch(ClassNotFoundException e) { out.println("Kelas tidak ditemukan"); } %> </body> </html> @copyright 2013, Muhammad Bagir, MTI. Modul Perkuliahan Pemrograman Berorientasi Object Lanjut, STTI I-Tech Semester Genap 2012-2013 Uji coba aplikasi dan perhatikan hasil seperti gambar dibawah ini : @copyright 2013, Muhammad Bagir, MTI. Modul Perkuliahan Pemrograman Berorientasi Object Lanjut, STTI I-Tech Semester Genap 2012-2013 Latihan / Tugas: Buatlah Form Order untuk Kasus diatas dengan ketentuan Komponen Sebagai Berikut : 1. Produk yang dipesan 2. Jumlah Produk yang dipesan 3. Tanggal Otomatis digenerate sistem 4. Alamat Pengiriman 5. Jenis Pengiriman 6. Harga Produk 7. Total Harga Produk 8. Semua Data tersebut akan otomatis dimasukkan ke dalam tabel pesanan pada database simpelanggan dengan ketentuan masingmasing pesan memiliki nopesanan dan masing-masing produk memiliki noproduk, baik noproduk maupun nopesanan bersifat unik(primary key) dan tidak boleh berulang pada masing-masing tabelnya. 9. Halaman web akan memberikan konfirmasi produk yant telah dipesan dan dapat menampilkan nopesanan produk serta jumlah nilai transaksi yang harus dibayarkan pelanggan. @copyright 2013, Muhammad Bagir, MTI. Modul Perkuliahan Pemrograman Berorientasi Object Lanjut, STTI I-Tech Semester Genap 2012-2013