• Tidak ada hasil yang ditemukan

PRAKTIKUM IV JDBC. Siswa dapat membuat aplikasi database sederhana menggunakan koneksi JDBC.

N/A
N/A
Protected

Academic year: 2021

Membagikan "PRAKTIKUM IV JDBC. Siswa dapat membuat aplikasi database sederhana menggunakan koneksi JDBC."

Copied!
15
0
0

Teks penuh

(1)

PRAKTIKUM IV

JDBC

1. Tujuan

Siswa dapat membuat aplikasi database sederhana menggunakan koneksi JDBC.

2. Praktikum

2.1. Penunjang

JDBC

Database berisi sekumpulan objek tabel, stored procedure, dan objek lainnya. Contoh software database yaitu Microsoft Access, SQL Server, Oracle, MySQL. Java menciptakan sebuah teknologi pengaksesan database dengan nama JDBC (Java Database Connectivity). JDBC merupakan sekumpulan API yang digunakan untuk mengeksekusi pernyataan SQL pada platform Java.

Pada latihan di modul ini kita akan menggunakan database MySQL yang dapat didownload secara gratis pada websitenya. MySQL biasanya dijalankan lewat command-line, namun Netbeans menyediakan editor yang dapat digunakan untuk mengeksekusi pernyataan SQL dengan lebih aktraktif.

Jadi software yang perlu dipersiapkan: - MySQL

- Driver / Connector Java-MySQL

2.2. Latihan

(2)

b. Extract file Connector Java-MySQL. Copy file hasil extract yang berupa .jar tersebut ke dalam folder jdk anda, seperti: C:\Program Files\Java\jdk1.6.0\jre\lib\ext

c. Registrasi driver dalam Netbeans.

Pada bagian Services di sebelah kanan, klik bagian Databases, klik pada Drivers dan cek apakah sudah ada MySQL Connector/ J driver. Kemudian cek bagian Database Connection, apakah sudah ada node jdbc:mysql:// [root on Default schema] yang merupakan koneksi MySQL kosong (tidak mengakses database apapun).

d. Buat database.

Database di dalam MySQL dibuat dengan menggunakan koneksi kosong jdbc:mysql:// [root on Default schema].

- Pastikan server MySQL sudah jalan.

- Klik kanan pada node koneksi kosong, pilih Connect. Masukkan passwod MySQL anda.

- Pada jendela editor, ketik: CREATE DATABASE buku

- Kemudian klik tombol Run SQL. e. Membuat koneksi database.

Pada bagian Services-> Databases-> Drivers-> MySQL (Connector/ J driver). Klik kanan, pilih Connect using. Isi semua data yang perlu. Check pada Show JDBC URL. URL yang terbentuk jika dikoneksikan ke database buku yang dibuat di atas, seperti ini:

jdbc:mysql://localhost/books

f. Membuat tabel.

Anda bisa membuat tabel dengan menggunakan menu Create Table, namun cara ini memiliki keterbatasan seperti tidak dapat menentukan auto-increment atau foreign-key. Cara yang lebih baik dengan menggunakan statemen SQL. Seperti di bawah:

Klik kanan pada jdbc:mysql://localhost:3306/buku, pilih Execute Command. Pada jendala editor, ketikkan:

(3)

id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, nama VARCHAR(40), kota VARCHAR(20), INDEX (nama) ) ENGINE=MyISAM;

Kemudian klik tombol Run SQL.

Kemudian buat satu table lagi yaitu tabel buku, seperti di bawah: CREATE TABLE buku(

id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,

ISBN VARCHAR(14) NULL UNIQUE, judul VARCHAR(60) NOT NULL, tahun DATE,

id_penerbit INTEGER REFERENCES penerbit(id)

ON DELETE CASCADE ON UPDATE CASCADE, penulis VARCHAR(60) NOT NULL,

INDEX (judul), INDEX (tahun),

INDEX (id_penerbit), INDEX (penulis) ) ENGINE=MyISAM;

Cek pada jdbc:mysql://localhost:3306/buku apakah sudah ada tables buku dan penerbit. Kalau belum coba refresh.

(4)

g. Mengisi data ke dalam tabel.

Kita akan mengisi data ke dalam tabel penerbit, dengan cara klik kanan pada database, dan Execute Command:

INSERT INTO penerbit (nama, kota) VALUES ("Penerbit ANDI", "Jogyakarta DIY"), ("Sams Publishing", "Indianapolis IN"), ("John Wiley & Sons", "New York NY"), ("McGraw-Hill", "New York NY"),

("Prentice Halls", "Englewood Cliffs NJ"), ("Addison Wesley", "Reading MA"),

("Wrox Press", "Birmingham UK");

Kemudian isi data ke dalam tabel buku seperti berikut:

INSERT INTO buku (ISBN, judul, tahun, id_penerbit, penulis) VALUES

("979-731-748-6", "Java 2 SE dengan JBuilder", "2005/1/1", "1", "Matius Soesilo Wijono, G. Sri Hartati, B. Herry Suharto"),

("979-763-145-1", "Membangun Aplikasi Menggunakan Qt Designer", "2006/1/1", "1", "B. Herry Suharto, Soesilo Wijono"),

(5)

("067-231-914-4", "Teach Yourself MySQL in 21 days", "2000/1/1", "2", "Mark Maslakowski, Tony Butcher"),

("186-100-833-3", "Beginning J2EE 1.4", "2003/1/1", "7", "Ivor Horton, James L. Weaver, Kevin Mukhar"),

("186-100-425-7", "Professional Java Security", "2001/1/1", "7", "Jess Garms, Daniel Somerfield");

h. Menampilkan isi tabel.

Pada tabel yang ingin anda tampilkan, klik kanan dan pilih View Data.

i. Setelah pada langkah-langkah sebelumnya kita membuat database dan tabel di dalamnya, sekarang kita akan membuat program Java yang akan melakukan koneksi terhadap database dan menampilkan isi tabel sesuai dengan statemen SQL.

j. Tampilan pada Command line. Pilih New-> Java class

Ketik coding di bawah: import java.sql.*; public class BookList { /**

* @param args the command line arguments */

public static void main(String[] args) { // TODO code application logic here Connection con = null;

Statement stmt = null; ResultSet rs = null;

(6)

try{

//loading driver MySQL/J

Class.forName("com.mysql.jdbc.Driver"); //membuat koneksi database

con =

DriverManager.getConnection("jdbc:mysql://localhost/books", "root", "mysql");

//statemen sql statik

stmt = con.createStatement();

//eksekusi SQL-statemen untuk tabel buku

rs = stmt.executeQuery("SELECT * FROM buku"); //ambil data result-set

ResultSetMetaData rsmd = rs.getMetaData(); int nColumn = rsmd.getColumnCount();

//tampilkan judul kolom

for(int i=1; i<=nColumn; i++)

System.out.print(rsmd.getColumnName(i) + " | "); System.out.println();

//tampilkan hasil query berupa data result-set dari tabel while(rs.next()){ System.out.println(rs.getLong(1) + "\t" + rs.getString(2) + ", \"" + rs.getString(3) + "\", (" + rs.getDate("tahun") + "), \\" + rs.getLong("id_penerbit") + "\n\t [" + rs.getString("penulis") + "]");

(7)

} }

catch(ClassNotFoundException e){

System.err.println("Error loading driver: " + e.getMessage()); } catch(SQLException e){ System.err.println("Error SQL: " + e.getMessage()); } finally{

//close database & resource JDBC try{ if(rs != null) rs.close(); } catch(SQLException sqle){} try{ if(stmt != null) stmt.close(); } catch(SQLException sqle){} try{ if(con != null) con.close(); } catch(SQLException sqle){} } } }

(8)

Buat kelas PubTableModel yang khusus menangani pengembalian data pada setiap baris:

import javax.swing.table.AbstractTableModel; import java.sql.*;

import java.util.ArrayList;

public class PubTableModel extends AbstractTableModel{ private int colnum = 3;

private int rownum ;

private String[] colNames = {"ID", "Nama Penerbit", "Kota"}; private ArrayList<String[]> ResultSets;

public PubTableModel(ResultSet rs) {

ResultSets = new ArrayList<String[]>(); try{ while(rs.next()){ String[] row = { rs.getString("id"), rs.getString("nama"), rs.getString("kota")}; ResultSets.add(row); } } catch(Exception e){ System.out.println("Exception in PubTableModel"); } }

public Object getValueAt(int rowIndex, int columnIndex){ String[] row = ResultSets.get(rowIndex);

(9)

return row[columnIndex]; }

public int getRowCount(){ return ResultSets.size(); }

public int getColumnCount(){ return colnum;

}

public String getColumnName(int param){ return colNames[param];

} }

Kemudian buat Jframe, tambahkan komponen Jtable kedalamnya. Buka bagian source. Ketik seperti di bawah. Bagian yang dihitamkan (BOLD) yang perlu ditambah secara manual, sisanya merupakan generated code.

import java.sql.*;

public class PubList extends javax.swing.JFrame { Connection con = null;

Statement stmt = null; ResultSet rs;

/** Creates new form PubList */ public PubList() {

try{

//loading driver MySQL/J

(10)

}

catch(ClassNotFoundException e){

System.err.println("Error loading driver: " + e.getMessage());

} try{

//membuat koneksi database con = DriverManager.getConnection("jdbc:mysql://localhost/book s", "root", "mysql"); //statemen sql statik stmt = con.createStatement(); } catch(SQLException e){ System.err.println("Error SQL: " + e.getMessage()); } initComponents(); rs = getResultData(); jTable1.setModel(new PubTableModel(rs)); closeResultSet(rs); }

public ResultSet getResultData(){

ResultSet rs = null; try{

//eksekusi SQL-statemen untuk tabel penerbit

rs = stmt.executeQuery("SELECT * FROM penerbit"); }

catch(SQLException e){

(11)

}

return rs; }

public void closeResultSet(ResultSet rs){

if(rs != null){ try{ rs.close(); } catch(SQLException e){ System.err.println("Error SQL: " + e.getMessage()); } } }

/** This method is called from within the constructor to * initialize the form.

* WARNING: Do NOT modify this code. The content of this method is

* always regenerated by the Form Editor. */

@SuppressWarnings("unchecked")

// <editor-fold defaultstate="collapsed" desc="Generated Code">

private void initComponents() {

jScrollPane1 = new javax.swing.JScrollPane(); jTable1 = new javax.swing.JTable();

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT _ON_CLOSE);

(12)

setTitle("Tabel Penerbit");

addWindowListener(new java.awt.event.WindowAdapter() { public void windowClosing(java.awt.event.WindowEvent evt) {

formWindowClosing(evt); }

});

jScrollPane1.setViewportView(jTable1); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Align ment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 375, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(15, Short.MAX_VALUE)) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Align ment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addContainerGap(14, Short.MAX_VALUE) .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 275, javax.swing.GroupLayout.PREFERRED_SIZE)

(13)

.addContainerGap()) );

pack();

}// </editor-fold>

private void formWindowClosing(java.awt.event.WindowEvent evt) {

// TODO add your handling code here:

//lepaskan resource statement if(stmt != null){ try{ stmt.close(); } catch(SQLException e){ System.err.println("Error SQL: " + e.getMessage()); } }

//lepaskan koneksi database if(con != null){ try{ con.close(); } catch(SQLException e){ System.err.println("Error SQL: " + e.getMessage()); } } }

(14)

/**

* @param args the command line arguments */

public static void main(String args[]) {

java.awt.EventQueue.invokeLater(new Runnable() { public void run() {

new PubList().setVisible(true); }

}); }

// Variables declaration - do not modify private javax.swing.JScrollPane jScrollPane1; private javax.swing.JTable jTable1;

// End of variables declaration }

(15)

3. Tugas

Referensi

Dokumen terkait

Papilitis adalah pembengkakan diskus yang disebabkan oleh peradangan lokal di nervus saraf optik dan dapat terlihat dengan pemeriksaan funduskopi.. Tipe lokal di

Menimbang : bahwa dalam rangka pelaksanaan ketentuan Pasal 81 Peraturan Pemerintah Nomor 6 tahun 2006 tentang Pengelolaan Barang Milik Negara / Daerah sebagaimana telah

Alasan masuk S1 Pendidikan Bahasa Inggris FKIP-UT karena tidak perlu meninggalkan tugas/fleksibel merupakan pilihan terbanyak yang di pilih oleh responden

Kelompok yang diberi pakan bungkil kelapa menghasilkan rata-rata jumlah kista yang paling sedikit tetapi mempunyai kista dengan ukuran diameter paling besar dan sebaliknya

Dengan diketahuinya gambaran MRSA pada penderita infeksi kaki diabetik di Poliklinik Kaki Diabetik RSUD Ulin Banjarmasin, maka dapat memberikan informasi mikrobiologis

Reaksi yang paling utama dari senyawa aromatik adalah reaksi substitusi aromatik elektrofilik digambarkan sebagai (E+) yang akan bereaksi dengan cincin aromatik

Tiga orang pasien yang dilakukan pemasangan okluder dievaluasi menggunakan TEE, tidak terdapat kelainan anatomis lain, arah pintasan dari kiri ke kanan, dan tidak