05_JDBC-Manipulasi database.doc
-
Upload
kuwat-santoso -
Category
Documents
-
view
22 -
download
0
description
Transcript of 05_JDBC-Manipulasi database.doc
PEMROGRAMAN BERORIENTASI OBJEK
JDBC XI - 1
PRAKTIKUM
Manipulasi Database MySQL di JAVA
1. Tujuan
Mahasiswa dapat membuat aplikasi database sederhana
menggunakan koneksi JDBC.
Mahasiswa dapat melakukan manipulasi database MySQL dengan
Java
2. Praktikum
2.1. Membuat Class Utama Manipulasi Database
Buat kelas dengan nama Penerbit.java yang didalamnya berisi
mengenai attribut dan method dari penerbit.
public class Penerbit {
public int id;
public String nama;
public String kota;
public Penerbit() {
}
public Penerbit(String nama, String kota) {
this.nama = nama;
this.kota = kota;
}
public void setID(int ID ) {
this.id = ID;
}
public String getNama() {
return nama;
PEMROGRAMAN BERORIENTASI OBJEK
JDBC XI - 2
}
public String getKota() {
return kota;
}
public int getID() {
return id;
}
}
2.2. Membuat Class interface Manipulasi Database
Kemudian buat class interface untuk manipulasi table penerbit
dengan nama interfacePenerbit.java. Adapun isi dari file
interfacePenerbit.java adalah sebagai berikut:
import java.sql.SQLException;
import java.util.List;
public interface interfacePenerbit {
Penerbit insertPenerbit(Penerbit g)throws SQLException;
void updatePenerbit(Penerbit g)throws SQLException;
void deletePenerbit(String g)throws SQLException;
List<Penerbit>Daftar()throws SQLException;
}
2.3. Membuat Class Implementasi Manipulasi Database
Setelah itu buat implementasinya untuk penerbit dengan nama
implementasiPenerbit.java agar dapat diimplementasikan pada
objek.
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
public class implementasiPenerbit implements interfacePenerbit{
PEMROGRAMAN BERORIENTASI OBJEK
JDBC XI - 3
private static Connection connection;
public static Connection getConnection() {
if (connection == null) {
try {
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
connection =
DriverManager.getConnection("jdbc:mysql://localhost:3306/buku", "root",
"");
} catch (SQLException ex) {
Logger.getLogger(PubTableModel.class.getName()).log(Level.S
EVERE, null, ex);
}
}
return connection;
}
@Override
public Penerbit insertPenerbit(Penerbit g) throws SQLException {
PreparedStatement preparedStatement =
getConnection().prepareStatement("insert into penerbit (nama,kota)
values (?,?)");
preparedStatement.setString(1, g.getNama());
preparedStatement.setString(2, g.getKota());
preparedStatement.executeUpdate();
return g;
}
@Override
public void updatePenerbit(Penerbit g) throws SQLException {
PEMROGRAMAN BERORIENTASI OBJEK
JDBC XI - 4
PreparedStatement preparedStatement =
getConnection().prepareStatement("update penerbit set nama=?,
kota=? where id=?");
preparedStatement.setString(1, g.getNama());
preparedStatement.setString(2, g.getKota());
preparedStatement.setInt(3, g.getID());
preparedStatement.executeUpdate();
}
@Override
public void deletePenerbit(String g) throws SQLException {
PreparedStatement preparedStatement =
getConnection().prepareStatement("delete from penerbit where id=? ");
preparedStatement.setString(1, g);
preparedStatement.executeUpdate();
}
@Override
public List<Penerbit> Daftar() throws SQLException {
Statement statement = getConnection().createStatement();
ResultSet resultSet =statement.executeQuery("select * from
penerbit");
List<Penerbit>list = new ArrayList<Penerbit>();
while (resultSet.next()){
Penerbit g = new
Penerbit(resultSet.getString("nama"),resultSet.getString("kota"));
g.setID(resultSet.getInt("id"));
list.add(g);
}
return list;
}
}
2.4. Edit Class Instansiasi Objek
PEMROGRAMAN BERORIENTASI OBJEK
JDBC XI - 5
Buka file PubList.java yang sudah dibuat sebelumnya kemudian
tambahkan beberapa komponen seperti gambar di bawah lalu
tambahkan fungsi-fungsi untuk manipulasi database dengan
bagian yang dihitamkan (BOLD) yang perlu ditambah secara
manual, sisanya merupakan generated code.
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
public class PubList extends javax.swing.JFrame {
Connection con = null;
Statement stmt = null;
ResultSet rs;
boolean pembeda;
interfacePenerbit terbit;
List<Penerbit> listGambar = new ArrayList<Penerbit>();
int x;
/**
* Creates new form PubList
*/
public PubList() {
try{
//loading driver MySQL/J
Class.forName("com.mysql.jdbc.Driver");
}
catch(ClassNotFoundException e){
System.err.println("Error loading driver: " + e.getMessage());
}
PEMROGRAMAN BERORIENTASI OBJEK
JDBC XI - 6
try{
//membuat koneksi database
con =
DriverManager.getConnection("jdbc:mysql://localhost/buku", "root", "");
//statemen sql statik
stmt = con.createStatement();
}
catch(SQLException e){
System.err.println("Error SQL: " + e.getMessage());
}
initComponents();
terbit = new implementasiPenerbit();
readData();
showData();
listSelection();
setButton(true, false);
jLabel3.setVisible(false);
rs = getResultData();
jTable1.setModel(new PubTableModel(rs));
closeResultSet(rs);
}
private void setButton(boolean a, boolean b) {
btnTambah.setEnabled(a);
btnUpdate.setEnabled(a);
btnDelete.setEnabled(a);
btnSimpan.setEnabled(b);
btnBatal.setEnabled(b);
}
PEMROGRAMAN BERORIENTASI OBJEK
JDBC XI - 7
public ResultSet getResultData(){
ResultSet rs = null;
try{
//eksekusi SQL-statemen untuk tabel penerbit
rs = stmt.executeQuery("SELECT * FROM penerbit");
}
catch(SQLException e){
System.err.println("Error SQL: " + e.getMessage());
}
return rs;
}
public void closeResultSet(ResultSet rs){
if(rs != null){
try{
rs.close();
}
catch(SQLException e){
System.err.println("Error SQL: " + e.getMessage());
}
}
}
private void showData() {
Penerbit g = listGambar.get(x);
txtnama.setText(g.getNama());
txtkota.setText(g.getKota());
jLabel3.setText(Integer.toString(g.getID()));
}
private void readData() {
try {
listGambar = terbit.Daftar();
} catch (SQLException ex) {
PEMROGRAMAN BERORIENTASI OBJEK
JDBC XI - 8
Logger.getLogger(PubList.class.getName()).log(Level.SE
VERE, null, ex);
}
}
private void listSelection() {
jTable1.getSelectionModel().addListSelectionListener(new
ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
x = jTable1.getSelectedRow();
if (x != -1) {
showData();
setButton(true, false);
}
}
});
}
/**
* 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();
txtnama = new javax.swing.JTextField();
PEMROGRAMAN BERORIENTASI OBJEK
JDBC XI - 9
txtkota = new javax.swing.JTextField();
btnTambah = new javax.swing.JButton();
btnSimpan = new javax.swing.JButton();
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
btnUpdate = new javax.swing.JButton();
btnDelete = new javax.swing.JButton();
btnBatal = new javax.swing.JButton();
jLabel3 = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_C
LOSE);
addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosing(java.awt.event.WindowEvent evt) {
formWindowClosing(evt);
}
});
jTable1.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null}
},
new String [] {
"Title 1", "Title 2", "Title 3", "Title 4"
}
));
jScrollPane1.setViewportView(jTable1);
txtnama.setEnabled(false);
PEMROGRAMAN BERORIENTASI OBJEK
JDBC XI - 10
txtkota.setEnabled(false);
btnTambah.setText("Tambah");
btnTambah.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnTambahActionPerformed(evt);
}
});
btnSimpan.setText("Simpan");
btnSimpan.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnSimpanActionPerformed(evt);
}
});
jLabel1.setText("Nama");
jLabel2.setText("Kota");
btnUpdate.setText("Update");
btnUpdate.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnUpdateActionPerformed(evt);
}
});
btnDelete.setText("Delete");
btnDelete.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
PEMROGRAMAN BERORIENTASI OBJEK
JDBC XI - 11
btnDeleteActionPerformed(evt);
}
});
btnBatal.setText("Batal");
btnBatal.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnBatalActionPerformed(evt);
}
});
jLabel3.setText("id");
javax.swing.GroupLayout layout = new
javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.L
EADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayou
t.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupL
ayout.Alignment.LEADING)
.addComponent(jScrollPane1,
javax.swing.GroupLayout.PREFERRED_SIZE, 375,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(layout.createSequentialGroup()
.addComponent(btnUpdate)
PEMROGRAMAN BERORIENTASI OBJEK
JDBC XI - 12
.addPreferredGap(javax.swing.LayoutStyle.Compone
ntPlacement.UNRELATED)
.addComponent(btnDelete)
.addPreferredGap(javax.swing.LayoutStyle.Compone
ntPlacement.UNRELATED)
.addComponent(btnSimpan)
.addGap(18, 18, 18)
.addComponent(btnBatal)))
.addContainerGap())
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupL
ayout.Alignment.LEADING)
.addComponent(jLabel1)
.addComponent(jLabel2))
.addGap(19, 19, 19)
.addGroup(layout.createParallelGroup(javax.swing.GroupL
ayout.Alignment.LEADING)
.addComponent(txtnama)
.addComponent(txtkota))
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupL
ayout.Alignment.LEADING)
.addComponent(btnTambah)
.addComponent(jLabel3))
.addGap(29, 29, 29))))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.L
EADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
layout.createSequentialGroup()
.addGap(19, 19, 19)
PEMROGRAMAN BERORIENTASI OBJEK
JDBC XI - 13
.addGroup(layout.createParallelGroup(javax.swing.GroupLayou
t.Alignment.BASELINE)
.addComponent(txtnama,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(btnTambah)
.addComponent(jLabel1))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlaceme
nt.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayou
t.Alignment.LEADING)
.addGroup(layout.createParallelGroup(javax.swing.GroupLay
out.Alignment.BASELINE)
.addComponent(txtkota,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel2))
.addComponent(jLabel3,
javax.swing.GroupLayout.Alignment.TRAILING))
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayou
t.Alignment.BASELINE)
.addComponent(btnUpdate)
.addComponent(btnDelete)
.addComponent(btnBatal)
.addComponent(btnSimpan))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlaceme
nt.RELATED, 7, Short.MAX_VALUE)
PEMROGRAMAN BERORIENTASI OBJEK
JDBC XI - 14
.addComponent(jScrollPane1,
javax.swing.GroupLayout.PREFERRED_SIZE, 275,
javax.swing.GroupLayout.PREFERRED_SIZE))
);
java.awt.Dimension screenSize =
java.awt.Toolkit.getDefaultToolkit().getScreenSize();
setBounds((screenSize.width-411)/2, (screenSize.height-434)/2,
411, 434);
}// </editor-fold>
private void
btnSimpanActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
if (pembeda == true) {
if (txtnama.getText().isEmpty()) {
JOptionPane.showMessageDialog(this, "Nama jangan
lupa diisi");
txtnama.requestFocus();
} else {
try {
Penerbit p = new
Penerbit(txtnama.getText(),txtkota.getText());
terbit.insertPenerbit(p);
setButton(true, false);
txtnama.setEnabled(false);
txtkota.setEnabled(false);
rs = getResultData();
jTable1.setModel(new PubTableModel(rs));
} catch (SQLException ex) {
Logger.getLogger(PubList.class.getName()).log(Leve
l.SEVERE, null, ex);
PEMROGRAMAN BERORIENTASI OBJEK
JDBC XI - 15
}
}
} else {
try {
Penerbit g = listGambar.get(x);
Penerbit p = new
Penerbit(txtnama.getText(),txtkota.getText());
p.setID(g.getID());
terbit.updatePenerbit(p);
setButton(true, false);
txtnama.setEnabled(false);
txtkota.setEnabled(false);
rs = getResultData();
jTable1.setModel(new PubTableModel(rs));
} catch (SQLException ex) {
Logger.getLogger(PubList.class.getName()).log(Level.
SEVERE, null, ex);
}
}
}
private void
btnTambahActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
setButton(false, true);
txtnama.setText("");
txtkota.setText("");
txtnama.setEnabled(true);
txtkota.setEnabled(true);
txtnama.requestFocus();
pembeda = true;
}
PEMROGRAMAN BERORIENTASI OBJEK
JDBC XI - 16
private void
btnUpdateActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
setButton(false, true);
pembeda = false;
txtnama.setEnabled(true);
txtkota.setEnabled(true);
}
private void
btnDeleteActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
Penerbit g = listGambar.get(x);
String s = jLabel3.getText();
int ss = JOptionPane.showConfirmDialog(null, "Apakah anda
yakin ingin menghapus" + " " + s, "Konfirmasi",
JOptionPane.YES_NO_OPTION);
if (ss == JOptionPane.YES_OPTION) {
try {
terbit.deletePenerbit(s);
rs = getResultData();
jTable1.setModel(new PubTableModel(rs));
} catch (SQLException ex) {
Logger.getLogger(PubList.class.getName()).log(Level.
SEVERE, null, ex);
}
}
}
PEMROGRAMAN BERORIENTASI OBJEK
JDBC XI - 17
private void
btnBatalActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
setButton(true, false);
txtnama.setEnabled(false);
showData();
}
private void formWindowClosing(java.awt.event.WindowEvent evt) {
// TODO add your handling code here:
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/*
* Set the Nimbus look and feel
*/
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting
code (optional) ">
/*
* If Nimbus (introduced in Java SE 6) is not available, stay with the
* default look and feel. For details see
*
http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info :
javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
PEMROGRAMAN BERORIENTASI OBJEK
JDBC XI - 18
javax.swing.UIManager.setLookAndFeel(info.getClassName()
);
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(PubList.class.getName()).log(j
ava.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(PubList.class.getName()).log(j
ava.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(PubList.class.getName()).log(j
ava.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(PubList.class.getName()).log(j
ava.util.logging.Level.SEVERE, null, ex);
}
//</editor-fold>
/*
* Create and display the form
*/
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new PubList().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JButton btnBatal;
PEMROGRAMAN BERORIENTASI OBJEK
JDBC XI - 19
private javax.swing.JButton btnDelete;
private javax.swing.JButton btnSimpan;
private javax.swing.JButton btnTambah;
private javax.swing.JButton btnUpdate;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTable jTable1;
private javax.swing.JTextField txtkota;
private javax.swing.JTextField txtnama;
// End of variables declaration
}
}