Anda di halaman 1dari 8

Praktikum Pemrograman Berorientasi Objek

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
Mengatur tata letak dan posisi komponen dalam kontainer (BorderLayout, BoxLayout,
FlowLayout, GridBagLayout, GridLayout)
d. Event Handling
Menangani event yang dilakukan user (klik mouse, ketik keyboard, perbesar frame, dsb)

IX- 1
Prakttikum Pemrograman Bero
orientasi Obje
ek

4. JDBC dan JDBC API


A
JDBC adalah stand
dar Java Dataabase Connecctivity , dan JDBC API merupakan Java Databasee
mming Interface ( API JDBC
Conneectivity Application Program C ). Semua ko
omponen dan
n teknik JDBC
C
tertanaam dan diimplementasikan dalam JDBC API . Pada daasarnya , JDBC API terdiri dari satu sett
kelas dan interfa
ace yang diggunakan untuk berinterakssi dengan daatabase dari aplikasi Java..
Umum PI melakukan 3 (tiga) fungsi berikut :
mnya, JDBC AP
a. Membangun hubbungan antara aplikasi Java dan
d database terkait
t
b. Membangun dan mengeksekussi pernyataan SQL
c. Memproses hasill
Beberaapa vendor database
d yang berbeda meenyediakan beerbagai driverr JDBC untukk mendukungg
aplikasi mereka ke database.
d Kom
mponen JDBC paling populeer terletak di ppaket berikut :
a. javaa.sql : terdiri dari
d komponeen JDBC stand
dar
BC , yang mennyediakan fituur tambahan , seperti Javaa
b. javaax.sql : berisi standard pendukung JDB
Naming and Direectory Interfaace (JNDI) daan Java Transsaction Servicee (JTS).
c. oraacle.jdbc : beriisi fungsi pend
dukung yang disediakan
d olehh java.sql dan javax.sql interrface.
d. oraacle.sql : berisi kelas dan intterface yang menyediakan
m p
pemetaan Javaa untuk SQL
5. JDBC Componen
nts dan Arch
hitecture
JDBC API
A disebut juuga driver JDB
BC, yang men
ngimplementasikan semua kkomponen JD
DBC termasukk
kelas dan
d interface,, untuk mem
mbangun koneeksi dan mem
manipulasi datta antara aplikasi Java dann
database yang dipilihh.
JDBC API
A berisi 2 (d
dua) set utama dari antarmuka, yaitu :
BC API aplikasi (antarmuuka untuk apliikasi Java Anda )
a. JDB
b. JDB
BC driver APII driver (anntarmuka untu
uk database Anda
A )

Gambar 9.1. The


e componen
nts and archiitecture of a JDBC API

IX- 2
Praktikum Pemrograman Berorientasi Objek

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

IX- 3
Prakttikum Pemrograman Bero
orientasi Obje
ek

6. Cara Kerja
K JDBC

G
Gambar 9.2.. Cara Kerja
a JDBC

Gam
mbar 9.3. Source Code JDBC
J Test
7. Tahap
pan Akses Database
D

IX- 4
Praktikum Pemrograman Berorientasi Objek

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

Text
Field

MySQL Label
JDBC
jTabel

Button

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;
/**
* Creates new form FormKoneksi
*/
public FormKoneksi() {
initComponents();
model=new DefaultTableModel();
this.jTable1.setModel(model);

IX- 5
Praktikum Pemrograman Berorientasi Objek

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);
}

IX- 6
Praktikum Pemrograman Berorientasi Objek

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);
}
}

private void cmbEditActionPerformed(java.awt.event.ActionEvent evt) {


// TODO add your handling code here:
if("Edit".equals(this.cmbEdit.getText()))
{
this.cmbAdd.setText("Update");

IX- 7
Praktikum Pemrograman Berorientasi Objek

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
}

IX- 8

Anda mungkin juga menyukai