chapter-ix.koneksi java dengan mysql

9
TUTORIAL KONEKSI JAVA DENGAN DATABASE MYSQL DENGAN TOOL NETBEANS Koneksi ke database pada Java ditangani oleh JDBC (java database connectivity). JDBC merupakan salah satu API(Application Programming Interface) Java yang secara khusus ditujukan untuk menangani koneksi ke database. Dengan JDBC, kita memungkinkan untuk menghubungkan database MySQL, oracle , access dan database lain ke java. Pada tutorial ini akan dibahas cara menghubungkan JAVA dengan MySQL. Yang dibutuhkan : 1. Netbeans 2. J2SE(Java) 3. Apache/Lampp (yang didalamnya terdapat database MySQL) Langkah pertama : jika kita menggunakan netbeans, buatlah project baru java standar application, atau jika sudah ada projectnya, kita tinggal melakukan import library MySql JDBC Driver, yaitu library yang berisi API(application programming interface) untuk koneksi java ke MySql. Caranya : 1. Klik kanan pada folder library pada project anda. Lihat gambar : 2. Pilih “add library”, dan kemudian akan muncul banyak pilihan library, dan cari “MySQL JDBC Driver”. Lalu klik add Library. Langkah kedua : buatlah sebuah kelas yang bertugas untuk membuat/ mengatur/ mengkondisikan/ mengeksekusi koneksi dari program Java anda ke MySql. Kenapa perlu digunakan kelas baru???. Agar kita tidak perlu mengkoding ulang jika kita membutuhkan koneksi database lebih dari 1 kali. Dengan adanya kelas koneksi, kita tinggal menginstansiasi

Upload: vera-lake

Post on 08-Nov-2014

23 views

Category:

Documents


0 download

DESCRIPTION

Materi Kulliah

TRANSCRIPT

TUTORIAL KONEKSI JAVA DENGAN DATABASE MYSQL DENGAN TOOL NETBEANS

Koneksi ke database pada Java ditangani oleh JDBC (java database connectivity). JDBC merupakan salah satu API(Application Programming Interface) Java yang secara khusus ditujukan untuk menangani koneksi ke database. Dengan JDBC, kita memungkinkan untuk menghubungkan database MySQL, oracle , access dan database lain ke java.

Pada tutorial ini akan dibahas cara menghubungkan JAVA dengan MySQL. Yang dibutuhkan :

1. Netbeans2. J2SE(Java)3. Apache/Lampp (yang didalamnya terdapat database MySQL)

Langkah pertama : jika kita menggunakan netbeans, buatlah project baru java standar application, atau jika sudah ada projectnya, kita tinggal melakukan import library MySql JDBCDriver, yaitu library yang berisi API(application programming interface) untuk koneksi java ke MySql.Caranya :

1. Klik kanan pada folder library pada project anda. Lihat gambar :2. Pilih “add library”, dan kemudian akan muncul banyak pilihan library, dan cari “MySQL

JDBC Driver”. Lalu klik add Library.

Langkah kedua : buatlah sebuah kelas yang bertugas untuk membuat/ mengatur/ mengkondisikan/ mengeksekusi koneksi dari program Java anda ke MySql. Kenapa perlu digunakan kelas baru???. Agar kita tidak perlu mengkoding ulang jika kita membutuhkan koneksi database lebih dari 1 kali. Dengan adanya kelas koneksi, kita tinggal menginstansiasi

objek dari kelas koneksi tersebut,sehingga tidak terjadi pemborosan kode dan program pun menjadi lebih optimal efisien dan lebih rapi.Dalam contoh program, kelas yang bertugas untuk menangani koneksi database MySql diberi nama dengan kelas koneksi.java

Source Code koneksi.java:package formdbmysql;import com.mysql.jdbc.ResultSetMetaData;import java.sql.Connection;import java.sql.DriverManager;import java.sql.Statement;/** * * @author pattimura */public class koneksi {private Statement data = null;private Connection koneksi = null;

private String Url="jdbc:Mysql://localhost/"; //host database andaprivate String DbName="tes_java"; //nama database Andaprivate String DBUser="root"; //username dari database, jika menggunakan default xampp maka username = rootprivate String DBPassword="root";//password db , default xampp tidak ada = "";

public koneksi(){ try { //setting driver yang digunakan untuk terhubung ke database Class.forName("com.mysql.jdbc.Driver");

//membuat koneksi dengan parameter url +nama database, username dan password koneksi = DriverManager.getConnection(Url+DbName, DBUser, DBPassword);

//membuat statement yang akan digunakan untuk mengeksekusi query dari aplikasi data = this.koneksi.createStatement();

} catch (Throwable ex) { System.out.println("error : "+ex); System.exit(1); }}

public Connection getConnection(){ return koneksi;}public Statement getStatement(){ return data; }

}

Langkah ketiga : Buatkan 1 file utama menggunakan jFrame dengan nama Utama.javaSource Code :package formdbmysql;import java.sql.ResultSet;import java.sql.SQLException;import java.util.logging.Level;import java.util.logging.Logger;import javax.swing.JOptionPane;import javax.swing.table.DefaultTableModel;/** * * @author pattimura */public class Utama extends javax.swing.JFrame {

/** Creates new form Utama */ public Utama() { initComponents(); }

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

jLabel1 = new javax.swing.JLabel(); jLabel2 = new javax.swing.JLabel(); jLabel3 = new javax.swing.JLabel(); jTextField1 = new javax.swing.JTextField(); jTextField2 = new javax.swing.JTextField(); jScrollPane1 = new javax.swing.JScrollPane(); jTextArea1 = new javax.swing.JTextArea(); jButton1 = new javax.swing.JButton(); jButton2 = new javax.swing.JButton(); jButton3 = new javax.swing.JButton(); jScrollPane2 = new javax.swing.JScrollPane(); jTable1 = new javax.swing.JTable(); jButton4 = new javax.swing.JButton();

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

jLabel1.setText("Stambuk :"); jLabel1.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);

jLabel2.setText("Nama :"); jLabel2.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);

jLabel3.setText("Komentar :"); jLabel3.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);

jTextArea1.setColumns(20); jTextArea1.setRows(5); jScrollPane1.setViewportView(jTextArea1);

jButton1.setText("Input"); jButton1.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) { jButton1ActionPerformed(evt); } });

jButton2.setText("Update"); jButton2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton2ActionPerformed(evt); } });

jButton3.setText("Delete"); jButton3.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton3ActionPerformed(evt); } });

jTable1.setModel(new javax.swing.table.DefaultTableModel( new Object [][] { {null, null, null}, {null, null, null}, {null, null, null}, {null, null, null} }, new String [] { "Stambuk", "Nama", "Komentar" } )); jScrollPane2.setViewportView(jTable1);

jButton4.setText("Show"); jButton4.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton4ActionPerformed(evt); } });

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addContainerGap(13, Short.MAX_VALUE) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addGroup(layout.createSequentialGroup() .addGap(15, 15, 15) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addGroup(layout.createSequentialGroup() .addComponent(jLabel3) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jScrollPane1)) .addGroup(layout.createSequentialGroup()

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabel1) .addComponent(jLabel2)) .addGap(18, 18, 18) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(jTextField2) .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 224, javax.swing.GroupLayout.PREFERRED_SIZE))))) .addGroup(layout.createSequentialGroup() .addGap(33, 33, 33) .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 78, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(18, 18, 18) .addComponent(jButton2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGap(18, 18, 18) .addComponent(jButton3, javax.swing.GroupLayout.PREFERRED_SIZE, 82, javax.swing.GroupLayout.PREFERRED_SIZE))) .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 373, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap()) .addGroup(layout.createSequentialGroup() .addGap(177, 177, 177) .addComponent(jButton4) .addContainerGap(178, Short.MAX_VALUE)) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addGap(25, 25, 25) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel1)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(jLabel2) .addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(18, 18, 18) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabel3) .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(18, 18, 18) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Al

ignment.BASELINE) .addComponent(jButton1) .addComponent(jButton2)) .addComponent(jButton3)) .addGap(18, 18, 18) .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 98, Short.MAX_VALUE) .addGap(18, 18, 18) .addComponent(jButton4) .addGap(19, 19, 19)) );

pack(); }// </editor-fold>

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: this.insert(this.jTextField1.getText(), this.jTextField2.getText(), this.jTextArea1.getText()); }

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: this.update(this.jTextField1.getText(), this.jTextField2.getText(), this.jTextArea1.getText());

}

private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: this.delete(this.jTextField1.getText()); }

private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: this.setTableFromDB(); }

private void insert(String nim, String nama, String komentar){ // buat objek koneksi yang menangani koneksi ke database koneksi conect = new koneksi(); // tentukan query yang akan dijalankan pada mySql/database // kita akan memasukkan data ke dalam tabel mahasiswa String query = "insert into mahasiswa (nim,nama,komentar) values ('"+nim+"','"+nama+"','"+komentar+"')";

//eksekusi query tersebut dengan cara : try { conect.getStatement().executeUpdate(query); //eksekusi

JOptionPane.showMessageDialog(this, "insert berhasil");//pemberitahuan jika berhasil

} catch (SQLException ex) { //jika ada kesalahan, maka akan ada pesan error dari sintaks dibawah ini. Logger.getLogger(Utama.class.getName()).log(Level.SEVERE, null, ex); JOptionPane.showMessageDialog(this, "insert gagal");//pemberitahuan jika gagal } }

private void update(String nim, String nama, String komentar){ // buat objek koneksi yang menangani koneksi ke database koneksi conect = new koneksi();

// tentukan query update yang akan dijalankan pada mySql/database // dalam queri ini kita akan mengganti nama dan komentar dari data yang terkait dengan nim. String query = "update mahasiswa set nama='"+nama+"', komentar= '"+komentar+"' where nim='"+nim+"' ";

//eksekusi query tersebut dengan cara : try { conect.getStatement().executeUpdate(query); //eksekusi

JOptionPane.showMessageDialog(this, "update berhasil");//pemberitahuan jika berhasil

} catch (SQLException ex) { //jika ada kesalahan, maka akan ada pesan error dari sintaks dibawah ini. Logger.getLogger(Utama.class.getName()).log(Level.SEVERE, null, ex); JOptionPane.showMessageDialog(this, "update gagal");//pemberitahuan jika gagal } }

private void delete(String nim){ // buat objek koneksi yang menangani koneksi ke database koneksi conect = new koneksi();

// tentukan query update yang akan dijalankan pada mySql/database // dalam queri ini kita akan menghapus data yang terkait dengan nim String query = "delete from mahasiswa where nim='"+nim+"' ";

//eksekusi query tersebut dengan cara : try { conect.getStatement().executeUpdate(query); //eksekusi

JOptionPane.showMessageDialog(this, "data berhasil dihapus");//pemberitahuan jika berhasil

} catch (SQLException ex) { //jika ada kesalahan, maka akan ada pesan error dari sintaks dibawah ini. Logger.getLogger(Utama.class.getName()).log(Level.SEVERE, null, ex); JOptionPane.showMessageDialog(this, "data gagal dihapus");//pemberitahuan jika gagal } }

private void setTableFromDB(){

koneksi conect = new koneksi();// objek koneksi utk koneksi ke DB ResultSet data = null; // int jumBaris=0; // variable untuk menentukan jumlah baris matriks

nantinya.

//query yang akan ditampilkan, misalkan kita ingin menampilkan data mahasiswa dari DB ke table String query="select * from mahasiswa";

try { data = conect.getStatement().executeQuery(query); // query dijalankan while(data.next()){ jumBaris++; } } catch (SQLException ex) { JOptionPane.showMessageDialog(null,"Error pada jumlah baris : "+ex.getMessage()); }

//jika jumlah baris telah didapatkan maka buat array 2 dimensi untuk menyimpan data sementara

String isi[][]= new String[jumBaris][3]; //jumbaris, dan jumlah kolom = 3{nim, nama, komentar}

// masukkan data dari ResultStatement kedalam matriks int i=0;//just for loop try { data = conect.getStatement().executeQuery(query);//eksekusi kembali query while (data.next()) { System.out.println("disiko"); isi[i][0] = "" + data.getString("nim"); // ini sintaks untk mengambil isinya, "nim" adalah nama kolom dalam DB System.out.println("nim = "+data.getString("nim")); isi[i][1] = "" + data.getString("nama"); isi[i][2] = "" + data.getString("komentar"); i++; } } catch (SQLException ex) { Logger.getLogger(Utama.class.getName()).log(Level.SEVERE, null, ex); }

String NamaKolom[] ={"Nim","Nama","Komentar"};//nama kolom yang nantinya akan ada pada tabel

DefaultTableModel model= new DefaultTableModel(isi,NamaKolom){};

//selanjutnya adalah mlakukan pengesetan pada tabel jTable1.setModel(model); //done!!! }

/** * @param args the command line arguments */ public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new Utama().setVisible(true); } });

}

// Variables declaration - do not modify private javax.swing.JButton jButton1; private javax.swing.JButton jButton2; private javax.swing.JButton jButton3; private javax.swing.JButton jButton4; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JScrollPane jScrollPane2; private javax.swing.JTable jTable1; private javax.swing.JTextArea jTextArea1; private javax.swing.JTextField jTextField1; private javax.swing.JTextField jTextField2; // End of variables declaration

}

Langkah keempat : Buat database dengan nama tes_java dan tabel mahasiswa.

Langkah kelima :Run file Utama.java