05_JDBC-Manipulasi database.doc

23
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 ) {

description

java manipulasi

Transcript of 05_JDBC-Manipulasi database.doc

Page 1: 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;

Page 2: 05_JDBC-Manipulasi database.doc

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{

Page 3: 05_JDBC-Manipulasi database.doc

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 {

Page 4: 05_JDBC-Manipulasi database.doc

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

Page 5: 05_JDBC-Manipulasi database.doc

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

}

Page 6: 05_JDBC-Manipulasi database.doc

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

}

Page 7: 05_JDBC-Manipulasi database.doc

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) {

Page 8: 05_JDBC-Manipulasi database.doc

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

Page 9: 05_JDBC-Manipulasi database.doc

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

Page 10: 05_JDBC-Manipulasi database.doc

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) {

Page 11: 05_JDBC-Manipulasi database.doc

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)

Page 12: 05_JDBC-Manipulasi database.doc

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)

Page 13: 05_JDBC-Manipulasi database.doc

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)

Page 14: 05_JDBC-Manipulasi database.doc

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

Page 15: 05_JDBC-Manipulasi database.doc

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;

}

Page 16: 05_JDBC-Manipulasi database.doc

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

}

}

}

Page 17: 05_JDBC-Manipulasi database.doc

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())) {

Page 18: 05_JDBC-Manipulasi database.doc

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;

Page 19: 05_JDBC-Manipulasi database.doc

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

}

}