modul x java database - UIGM | Login Student

advertisement
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
Conneectivity Application Program
mming Interface ( API JDBC
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
mnya, JDBC AP
PI melakukan 3 (tiga) fungsi berikut :
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
b. javaax.sql : berisi standard pendukung JDB
BC , yang mennyediakan fituur tambahan , seperti Javaa
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 :
a. JDB
BC API Æ aplikasi (antarmuuka untuk apliikasi Java Anda )
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
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
The Type class is only used to define the constants used for identifying
of the SQL types
This class contains methods to perform conversion of SQL date formats
and Java Date objects
This class is similar to the Date class, and it contains methods to
convert between SQL time and Java Time object
This class provides additional precision to the Java Date object by
adding a nanosecond field
DriverPropertyInfo
Type
Date
Time
TimeStamp
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
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
The Statement methods are used to execute SQL statements and
retrieve data from the ResultSet object
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
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
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
This interface contains a collection of metadata information or physical
descriptions associated with the last ResultSet object
This interface contains a collection of metadata regarding to the
database used, including the database version, table names, columns, and
supported functions
Connection
Statement
PreparedStatement
CallableStatement
ResultSet
ResultSetMetaData
DatabaseMetaData
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
JDBC
Label
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
Download