MODUL X
JAVA DATABASE
I.
TUJUAN
1. Memahami Konsep Graphical User Interface (GUI) di Java dan Komponen Dasar Swing
2. Memahami koneksi database menggunakan JDBC dan JDBC API
3. Mampu membuat aplikasi database sesuai dengan studi kasus nyata di masyarakat
II.
DASAR TEORI
1. API untuk Aplikasi GUI di Java
a. AWT (Abstract Window Toolkit)
Library dan komponen GUI (java.awt) yang pertama kali diperkenalkan oleh Java, Sun tidak
merekomendasikan lagi penggunaan komponen GUI dari AWT
b. Swing or JFC (Java Foundation Class)
Library dan komponen GUI (javax.swing) terbaru dari Java dan yang direkomendasikan Sun
untuk pemrograman GUI. Komponen Swing sebagian besar adalah turunan AWT dan lebih
lengkap daripada AWT
2. Fitur Swing
a. Komponen GUI Lengkap Æ button, listbox, combobox, textarea, dsb
b. Pluggable Look-and-Feel Æ tampilan GUI dapat diubah sesuai dengan kehendak (tidak perlu
mengikuti native sistem operasi)
c. Data Transfer Antar Komponen Æ drag and drop, copy and paste
d. Internationalization Æ proses desain aplikasi yang memungkinkan aplikasi dijalankan sesuai
dengan preferensi tanpa rekompilasi
e. Localization Æ proses translasi teks ke bahasa lokal dan menambahkan komponen lokal
3. Komponen Swing
a. Top-Level Container
Kontainer dasar dimana komponen lainnya diletakkan (JFrame, JDialog dan Applet)
a. Intermediate Container
Kontainer perantara dimana komponen lainnya diletakkan
(JPanel, JScrollPane, JTabbedPane, JToolbar, JSplitPane)
b. Atomic Component
Komponen yang memiliki fungsi spesifik dan menerima interaksi langsung dari user (JButton,
JLabel, JTextArea, dsb)
c. Layout Manager
4. JDBC
JDBC
Conne
tertana
kelas
Umum
a. Me
b. Me
c. Me
Bebera
aplikas
a. java
b. java
Na
c. ora
d. ora
5. JDBC
JDBC A
kelas d
databa
JDBC A
a. JDB
b. JDB
dan JDBC A
adalah stand
ectivity Applic
am dan diimp
dan interfa
mnya, JDBC AP
mbangun hub
mbangun dan
mproses hasil
apa vendor d
i mereka ke d
a.sql : terdiri d
ax.sql : berisi
ming and Dire
acle.jdbc : beri
acle.sql : beris
Componen
API disebut ju
dan interface,
se yang dipilih
API berisi 2 (d
BC API Æ apl
BC driver API
Gam
API
dar Java Data
ation Program
lementasikan
ace yang dig
PI melakukan
bungan antara
mengeksekus
l
database yang
database. Kom
dari kompone
standard pe
ectory Interfa
isi fungsi pend
i kelas dan int
nts dan Arch
uga driver JDB
, untuk mem
h.
dua) set utam
ikasi (antarmu
I Æ driver (an
bar 9.1. The
abase Connec
mming Interfa
dalam JDBC
gunakan untu
3 (tiga) fungsi
aplikasi Java d
si pernyataan
berbeda me
mponen JDBC
en JDBC stand
ndukung JDB
ace (JNDI) da
dukung yang d
terface yang m
hitecture
BC, yang men
mbangun kone
a dari antarm
uka untuk apli
ntarmuka untu
e componen
ctivity , dan
ce ( API JDBC
API . Pada da
k berinteraks
berikut :
dan database t
SQL
enyediakan be
paling popule
dar
BC , yang men
an Java Trans
disediakan oleh
menyediakan p
ngimplementa
eksi dan mem
uka, yaitu :
ikasi Java And
uk database A
nts and archi
JDBC API
C ). Semua ko
asarnya , JDB
si dengan da
terkait
erbagai driver
er terletak di p
nyediakan fitu
saction Service
h java.sql dan
pemetaan Java
sikan semua k
manipulasi dat
a )
Anda )
itecture of a
merupakan J
omponen dan
C API terdiri
atabase dari
r JDBC untuk
paket berikut
ur tambahan
e (JTS).
javax.sql inter
a untuk SQL
komponen JD
ta antara apli
a JDBC API
ava Database
n teknik JDBC
dari satu set
aplikasi Java.
k mendukung
:
, seperti Java
rface.
DBC termasuk
kasi Java dan
e
C
t
.
g
a
k
n
Tabel 9.1. Classes defined in the JDBC API
Classes Function
DriverManager
Handle loading and unloading of drivers and establish a connection to a
database
DriverPropertyInfo
All methods defined in this class are used to setup or retrieve
properties of a driver. The properties can then be used by the
Connection object to connect to the database
Type
The Type class is only used to define the constants used for identifying
of the SQL types
Date
This class contains methods to perform conversion of SQL date formats
and Java Date objects
Time
This class is similar to the Date class, and it contains methods to
convert between SQL time and Java Time object
TimeStamp
This class provides additional precision to the Java Date object by
adding a nanosecond field
Tabel 9.2. Interfaces defined in the JDBC API
Interfaces Function
Driver
The primary use of the Driver interface is to create the Connection
objects. It can also be used for the collection of JDBC driver meta data
and JDBC driver status checking
Connection
This interface is used for the maintenance and status monitoring of a
database session. It also provides data access control through the use of
transaction locking
Statement
The Statement methods are used to execute SQL statements and
retrieve data from the ResultSet object
PreparedStatement
This interface is used to execute precompile SQL statements.
Precompile statements allow for faster and more efficient statement
execution, and more important, it allows running dynamic query with
querying parameters ’ variation. This interface can be considered as a
subclass of the Statement
CallableStatement
This interface is mainly used to execute SQL stored procedures. Both
IN and OUT parameters are supported. This interface can be
considered as a subclass of the Statement
ResultSet
The ResultSet object contains the queried result in rows and columns
format. This interface also provides methods to retrieve data returned
by an SQL statement execution. It also contains methods for SQL data
type and JDBC data type conversion
ResultSetMetaData
This interface contains a collection of metadata information or physical
descriptions associated with the last ResultSet object
DatabaseMetaData
This interface contains a collection of metadata regarding to the
database used, including the database version, table names, columns, and
supported functions
6. Cara K
7. Tahap
Kerja JDBC
pan Akses D
G
Gam
Database
Gambar 9.2.
mbar 9.3. So
. Cara Kerja
urce Code J
a JDBC
JDBC Test
III.
GUIDED (APLIKASI BIODATA)
1. Buatlah database dengan menggunakan mySQL, dengan desain tabel sebagai berikut :
CREATE TABLE anggota (
-> id INT NOT NULL AUTO_INCREMENT, nama VARCHAR(50) NOT NULL,
-> alamat VARCHAR(100) NOT NULL, -> telp VARCHAR(30) NOT NULL,
-> PRIMARY KEY (id ));
2. Buatlah aplikasi biodata dengan desain seperti gambar dibawah ini.
Langkah-langkah :
a. Buatlah projek baru di Netbeans pilih File Æ New Project.
b. Pilih Categories Æ Java dengan Projects Æ Java Application Æ klik Next.
c. Isi nama project dengan TestDatabase dan pilih lokasi (folder) project yang akan Anda kerjakan
d. Hilangkan tanda (V) pada check box Set as Main Project dan Create Main Class Æ klik finish
e. Kemudian desainlah sebuah tampilan aplikasi seperti gambar dibawah ini
f. Kemudian buatlah source code berikut ini :
package tes.database; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import javax.swing.JOptionPane; import javax.swing.table.DefaultTableModel;
public class FormKoneksi extends javax.swing.JFrame { private static Connection koneksi;
private DefaultTableModel model; /** jTabel Button Text Field Label MySQL JDBC
model.addColumn("ID"); model.addColumn("Nama"); model.addColumn("Alamat"); model.addColumn("Telepon"); ambil_data_tabel(); }
private static Connection buka_koneksi() { if (koneksi==null) { try { String url="jdbc:mysql://localhost:3306/belajar"; String user="root"; String password=""; DriverManager.registerDriver(new com.mysql.jdbc.Driver()); koneksi=DriverManager.getConnection(url,user,password); }catch (SQLException t) {
System.out.println("Error membuat koneksi"); }
}
return koneksi; }
private void ambil_data_tabel() { model.getDataVector().removeAllElements(); model.fireTableDataChanged(); try { Connection c=buka_koneksi(); Statement s= c.createStatement(); String sql="Select * from anggota"; ResultSet r=s.executeQuery(sql);
while (r.next()) {
Object[] o=new Object[4]; o[0]=r.getString("id"); o[1]=r.getString("nama"); o[2]=r.getString("alamat"); o[3]=r.getString("tlp") model.addRow(o); } r.close(); s.close(); ambil_tabel_klik(); }catch(SQLException e) {
System.out.println("Terjadi kesalahan "+e.getMessage()); }
}
private void ambil_tabel_klik() { int i=this.jTable1.getSelectedRow(); if(i==-1) { return; }
String kode=(String) model.getValueAt(i, 0); this.lblKode.setText(kode);
String nama=(String) model.getValueAt(i, 0); this.TxtNama.setText(nama);
String alamat=(String) model.getValueAt(i, 1); this.TxtAlamat.setText(alamat);
String tlp=(String) model.getValueAt(i, 2); this.TxtTelepon.setText(tlp);
private void jTable1MouseClicked(java.awt.event.MouseEvent evt) { // TODO add your handling code here:
this.ambil_tabel_klik();
}
private void cmbAddActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here:
Connection c=buka_koneksi(); if("Add".equals(this.cmbAdd.getText())) { this.cmbAdd.setText("Save"); this.cmbEdit.setText("Cancel"); this.cmbDelete.enable(false); this.cmbRefresh.enable(false); this.lblKode.setText("0"); this.TxtNama.setText(""); this.TxtAlamat.setText(""); this.TxtTelepon.setText(""); }else if("Save".equals(this.cmbAdd.getText())) {
String sqlkode="Insert into anggota (`nama`,`alamat`,`tlp`) " + "values ('"+this.TxtNama.getText()+"'," + "'"+this.TxtAlamat.getText()+"'," + "'"+this.TxtTelepon.getText()+"')"; try { PreparedStatement p2=(PreparedStatement) c.prepareStatement(sqlkode); p2.executeUpdate(); p2.close();
} catch (SQLException ex) {
JOptionPane.showMessageDialog(this, "Terjadi kesalahan
"+ex.getMessage()); } this.cmbAdd.setText("Add"); this.cmbEdit.setText("Edit"); this.cmbDelete.enable(true); this.cmbRefresh.enable(true); }else if("Update".equals(this.cmbAdd.getText())) {
String sqlkode="Update anggota SET
`nama`='"+this.TxtNama.getText()+"'," + "`alamat`='"+this.TxtAlamat.getText()+"'," + "`tlp`='"+this.TxtTelepon.getText()+"' " + "Where ID='"+this.lblKode.getText()+"'"; try { PreparedStatement p2=(PreparedStatement) c.prepareStatement(sqlkode); p2.executeUpdate(); p2.close();
} catch (SQLException ex) {
JOptionPane.showMessageDialog(this, "Terjadi kesalahan
"+ex.getMessage()); } this.cmbAdd.setText("Add"); this.cmbEdit.setText("Edit"); this.cmbDelete.enable(true); this.cmbRefresh.enable(true); } }
this.cmbEdit.setText("Cancel"); this.cmbDelete.enable(false); this.cmbRefresh.enable(false); }else if("Cancel".equals(this.cmbEdit.getText())) { this.cmbAdd.setText("Add"); this.cmbEdit.setText("Edit"); this.cmbDelete.enable(true); this.cmbRefresh.enable(true); } }
private void cmbDeleteActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here:
Connection c=buka_koneksi();
String sqlkode="Delete from anggota "
+ "Where ID='"+this.lblKode.getText()+"'"; try { PreparedStatement p2=(PreparedStatement) c.prepareStatement(sqlkode); p2.executeUpdate(); p2.close();
} catch (SQLException ex) {
JOptionPane.showMessageDialog(this, "Terjadi kesalahan
"+ex.getMessage()); }
}
private void cmbRefreshActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here:
ambil_data_tabel();
}
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() { public void run() {
new FormKoneksi().setVisible(true); }
}); }
// Variables declaration - do not modify private javax.swing.JTextField TxtAlamat;
private javax.swing.JTextField TxtNama; private javax.swing.JTextField TxtTelepon; private javax.swing.JButton cmbAdd; private javax.swing.JButton cmbDelete; private javax.swing.JButton cmbEdit; private javax.swing.JButton cmbRefresh; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; private javax.swing.JPanel jPanel1;
private javax.swing.JScrollPane jScrollPane1; private javax.swing.JTable jTable1;
private javax.swing.JLabel lblKode;
// End of variables declaration }