"Selamat Datang"
"Sebuah Perjalanan Hidup yang penuh inspirasi, yang Kurenungkan"

Sabtu, 23 Juli 2011

Membuat tabel InnoDB dengan phpmyadmin. Untuk merelasikan tabel di MySQL

Pada tulisan ini, kita telah membuat tabel dengan engine innodb dengan menggunakan Query. Sekarang kita akan mencoba membuat tabel berelasi dengan menggunakan phpmyadmin, tanpa sintaks sama sekali. Langkah-langkahnya adalah:
Pada halaman home phpmyadmin, cari tulisan ‘Create Database’ atau ‘Ciptakan database baru’, kemudian isi dengan nama universitas (nama database)

Kemudian buat tabel pada database universitas.
1. Buat tabel jurusan dengan 2 field, seperti tampilan dibawah, kemudian klik go

2.  Buat tabel dengan mengisi kolom-kolom seperti dibawah:

Jangan lupa ubah storage enginenya menjadi InnoDB

Ulangi untuk tabel mahasiswa
1. Buat tabel mahasiswa dengan 4 field, seperti tampilan dibawah, kemudian klik go
Field Jenis Ukuran Primary Key Index
nim VARCHAR 8 Yes -
nama VARCHAR 30 - -
tgl_lahir DATE
- -
id_jurusan VARCHAR 6 - Yes
Perlu diketahui, field yang akan dihubungkan harus dijadikan index. agar gampang dalam pendefenisian relasi.
Jangan lupa mendefiniskan storage engine= InnoDB. kemudian klik Simpan.
Untuk merelasikan tabel mahasiswa dan jurusan, klik link mahasiswa, kemudian klik tampilan relasi/relation view

Kemudian akan muncul tampilan seperti dibawah. Pilih field mana yang akan direlasikan (menjadi foreign key), pilih referenced fieldnya (dalam kasus ini adalah jurusan->id_jurusan), pilih perlakuan ON UPDATE dan ON DELETE (CASCADE, NULL, NO ACTION dan RESTRICT).

Klik tombol simpan.
Database sudah terelasi. Bagaimana cara membuktikannya?
Untuk membuktikannya anda dapat memasukkan data pada tabel mahasiswa (tabel child) (dengan asumsi tabel jurusan(tabel parents) belum diisi).

Jika terdapat tampilan error seperti diatas :
1#1452 - Cannot add or update a child row: a foreign key constraint fails (`universitas/mahasiswa`, CONSTRAINT `mahasiswa_ibfk_1` FOREIGN KEY (`id_jurusan`) REFERENCES `jurusan` (`id_jurusan`) ON DELETE CASCADE ON UPDATE CASCADE)
artinya: Selamat, kedua tabel telah berelasi, tapi kalau gak ada tampilan error, berarti tabel anda belum berelasi. Mungkin saja anda lupa mengatur storage engine.
Selamat mencoba :)

Sabtu, 09 Juli 2011

Program Searching (Pencarian Data) Pada Netbeans

Pada program kita sebelumnya, kita telah membuat program untuk tombol simpan, edit dan hapus.. Nah sekarang kita akan buat program untuk pencarian data, dimana pada program ini pencarian datanya berdasarkan nobp atau nama mahasiswa,, silahkan lihat latihan sebelumnya
Langkah-langkahnya sebagai berikut :
klik kanan pada jtextfield untuk pencarian data dan ketikan koding berikut ini :

private void jTextField3ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
DefaultTableModel tabelnyo = new DefaultTableModel();
tabelnyo.addColumn("NO BP");
tabelnyo.addColumn("NAMA");
tabelnyo.addColumn("JURUSAN");

try{
koneksi();
String sql = "Select * from mahasiswa where nobp like '%" + jTextField3.getText() + "%'" +
"or nama like '%" + jTextField3.getText() + "%'";
ResultSet rs = cn.executeQuery(sql);
while (rs.next()) {
tabelnyo.addRow(new Object[]{
rs.getString(1),
rs.getString(2),
rs.getString(3)
});
}
jTable1.setModel(tabelnyo);

}catch (Exception e){
}
}

Program Simpan, Edit, Hapus dan Cari dengan Netbeans

Pada database akademik di latihan sebelumnya, tambahkan tabel mahasiswa :

CREATE TABLE mahasiswa (
nobp CHAR(7) PRIMARY KEY,
nama VARCHAR(30),
jurusan VARCHAR(30));
 
tambahkan sebuat class dengan nama mahasiswa, disain form seperti tampilan berikut :





















kodingnya :

package prjakademik;
import java.sql.*;
import javax.swing.*;
import javax.swing.table.*;
/**
 *
 * @author Erin
 */
public class mahasiswa extends javax.swing.JFrame {
    public Connection conn;
    public Statement cn;


    /** Creates new form mahasiswa */
    public mahasiswa() {
        initComponents();
        bersih();
        tampildata();
        jComboBox1.addItem("Sistem Informasi");
        jComboBox1.addItem("Sistem Komputer");
        jComboBox1.addItem("Manajemen Informatika");
    }


tambahkan sebuah method pada class mahasiswa dengan nama koneksi, bisa juga di lihat pada lahitan sebelumnya..
public void koneksi(){
    try{
        Class.forName("com.mysql.jdbc.Driver");
        conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/akademik","root","");
        cn = conn.createStatement();
    }catch (Exception e){
        JOptionPane.showMessageDialog(null,"koneksi gagal..");
        System.out.println(e.getMessage());
        }
    }


//nethod bersih
public void bersih(){
jTextField1.setText("");
jTextField2.setText("");
jTextField3.setText("");
jComboBox1.setSelectedItem("-Pilih-");
}

//method tampil data
public void tampildata(){
DefaultTableModel tabelnyo = new DefaultTableModel();
tabelnyo.addColumn("NO BP");
tabelnyo.addColumn("NAMA ");
tabelnyo.addColumn("JURUSAN");

try{
koneksi();
String sql = "Select * from mahasiswa order by nobp asc";
ResultSet rs = cn.executeQuery(sql);
while (rs.next())
{
tabelnyo.addRow(new Object[]{
rs.getString(1),
rs.getString(2),
rs.getString(3),
});
}
jTable1.setModel(tabelnyo);

}catch (Exception e){
JOptionPane.showMessageDialog(null, "Ada Kesalahan");
}

}

method carimhs :
public void carimhs(){
try{

koneksi();
String sql = "Select * from mahasiswa where nobp='"+jTextField1.getText()+"'";
ResultSet rs = cn.executeQuery(sql);

if (rs.next())
{

jTextField1.setText(rs.getString(1));
jTextField2.setText(rs.getString(2));
jComboBox1.setSelectedItem(rs.getString(3));


JOptionPane.showMessageDialog(null,"Data mahasiswa : " + jTextField1.getText() + " sudah ada.!!!");
bersih();
}
} catch (Exception e){}
jTextField2.requestFocus();
}

program pada tombol simpan..
double klik tombol simpan atau klik kanan-events-actionperformed dan ketikan koding berikut :
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
try{

koneksi();
String sql = "insert into mahasiswa values ('"+ jTextField1.getText()+"', '" + jTextField2.getText() + "' , '" + jComboBox1.getSelectedItem() + "')";
cn.executeUpdate(sql);
conn.close();

tampildata();
bersih();
JOptionPane.showMessageDialog(null,"Data berhasil di simpan");

}catch (Exception e){
JOptionPane.showMessageDialog(null,"Proses penyimpanan gagal/koneksi gagal..");
System.out.println(e.getMessage());
}
}

program pada tombol edit..
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
try{

koneksi();
String sql = "update mahasiswa set nama='"+ jTextField2.getText() +"'," +
" jurusan='" + jComboBox1.getSelectedItem() + "'" +
"where nobp='" + jTextField1.getText() + "'";
cn.executeUpdate(sql);
conn.close();

tampildata();
bersih();
JOptionPane.showMessageDialog(null,"Data berhasil di rubah");

}catch (Exception e){
JOptionPane.showMessageDialog(null,"Proses update gagal/koneksi gagal..");
System.out.println(e.getMessage());
}
}

program pada tombol hapus :
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
try{

koneksi();
String sql = "delete from mahasiswa where nobp='"+ jTextField1.getText() +"'";
cn.executeUpdate(sql);
conn.close();

tampildata();
bersih();
JOptionPane.showMessageDialog(null,"Data berhasil di hapus");

}catch (Exception e){
JOptionPane.showMessageDialog(null,"Proses hapus gagal/koneksi gagal..");
System.out.println(e.getMessage());
}
}

klik kanan pada textfield nobp-events-key-keypresed :
if(evt.getKeyCode()==10){
carimhs();
}

klik kanan pada tabel-events-mouse-mouse clicked :
private void jTable1MouseClicked(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
int table = jTable1.getSelectedRow();
//mengambil data dari table
String a = jTable1.getValueAt(table, 0).toString();
String b = jTable1.getValueAt(table, 1).toString();
String c = jTable1.getValueAt(table, 2).toString();

jTextField1.setText(a);
jTextField2.setText(b);
jComboBox1.setSelectedItem(c);

jTextField1.setEnabled(false);
jTextField2.requestFocus();
jButton1.setEnabled(false);
}

cobalah buat tabel dan program untuk data matakuliah...
semoga sukses...
Selalu berbagi untuk kebaikan ya....

Program Login Pada Netbeans. (Koneksi ke database MySQL menggunakan Netbeans)

Membuat program login dengan netbeans dimana user yang dapat mengakses aplikasi adalah user yang sudah terdaftar dalam databse, pada latihan kali ini kita akan buat dua buah form( login dan menu) dan ketika user mengentrikan user name dan password jika user dan password sudah ada dalam database maka akan memanggil form menu...
1. Buatlah database dan tabel terlebih dahulu :
CREATE DATABASE akademik;
USE akademik;
CREATE TABLE USER (
username VARCHAR(10) PRIMARY KEY,
PASSWORD VARCHAR(10));
INSERT INTO USER VALUES ('erin','java');
Baca cara buat database..
2. Buka aplikasi Netbeans dan buat project baru dengan nama prjakademik, tambahkan class baru (jframe form) dengan nama login dan menu


















3. Menambahkan library,
Pada project prjakademik, klik kanan pada libraries, add library, pilih MySQL JDBC Driver dan klik tombol Add Library...

Ketikan koding berikut pada class login...


package prjakademik;
import java.sql.*;
import javax.swing.*;

/**
*
* @author Erin
*/
public class login extends javax.swing.JFrame {
public Connection conn;
public Statement cn;
/** Creates new form login */
public login() {
initComponents();
}

public void koneksi(){
try{
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/akademik","root","");
cn = conn.createStatement();
}catch (Exception e){
JOptionPane.showMessageDialog(null,"koneksi gagal..");
System.out.println(e.getMessage());
}
}

public void cariuser(){
try{
koneksi();
String sql = "Select * from user where username='"+jTextField1.getText()+"' and password='" + jPasswordField1.getText() + "'";
ResultSet rs = cn.executeQuery(sql);
if (rs.next())
{
JOptionPane.showMessageDialog(null, "Sukses Bro.....!");
new menu().show();
this.dispose();
}
}catch (Exception e){
JOptionPane.showMessageDialog(null, "Ada Kesalahan");
}

}

private void jTextField1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
jPasswordField1.requestFocus();
}

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

private void formWindowOpened(java.awt.event.WindowEvent evt) {
// TODO add your handling code here:
this.setTitle("Login...!");
this.setLocationRelativeTo(null);
}

Jalankan program, isikan user dan password berdasarkan yang sudah kita isi tadi pada tabel user, contoh (user : erin, password : java)..
Selamat mencoba....

Buat Nomor Otomatis Di Netbeans

Berikut ini adalah koding untuk membuat nomor otomatis di Netbeans.
Koding untuk membuat nomor otomatis ini digunakan pada aplikasi penjualan untuk membuat no faktur. dimana setiap kali kita memanggi form penjualan maka nomor akan terbuat secara otomatis.. Berikut contoh formnya....




















koding programnya.....
public void buatnomor(){
try{
koneksi();
String sql = "Select nofaktur as no from jual ORDER by nofaktur desc";
ResultSet rs = cn.executeQuery(sql);

if (rs.next())
{
int no_t = Integer.parseInt(rs.getString("no")) + 1;
jTextField1.setText(Integer.toString(no_t));
}
else{
int no_t = 1;
jTextField1.setText(Integer.toString(no_t));
}
rs.close();
}catch (Exception e){

}
}

pada public, panggi method buatnomor

public penjualan0410018() {
initComponents();
tabel.setModel(tblmodel);
buatnomor();
tglskrg();
isicombo();
}

Pemrograman Database Java Desktop GUI dengan Netbeans


Yang akan dijelaskan pada pokok pembahasan ini adalah cara menggunakan fasilitas yang telah disediakan oleh Netbeans untuk membuat program Database Java GUI. akan terlihat sederhana, mudah dipelajari dan dipahami.
Contoh proyek yang akan dibuat adalah Program Database Mahasiswa pada Universitas X menggunakan MySQL dan Java.
Yang harus disiapkan sebelum belajar adalah :
1. Netbeans 6.9.1 (Download)
2. MySQL 5.5.9 (Download)
3. mysql-connector-java-5.1.15-bin.jar (Download)
Note: Sesuaikan ketiga software diatas dengan Platform yang anda gunakan.
Langkah-Langkah dalam membuat Proyek.
1. Membuat Database Universitas dalam MySQL
mysql>create database universitas_x;

Membuat table Mahasiswa (mhs) dengan field-field: nim, nama, alamat, jurusan.
mysql>create table mhs (
nim char(18) not null primary key,
nama varchar(50),
alamat varchar(80)
);

2. Aplikasi Java Desktop GUI dan MySQL
a. Buka Netbeans anda
b. Pilih tab Services –> Databases. Klik kanan di Folder Driver dan klik New Driver. Pada Window New JDBC Driver pilih tombol Add. carilah mysql-connector-java-5.1.15-bin.jar yang telah anda download dan ekstrak.

Lihatlah perubahan dalam folder driver anda. MySQL Connector telah terdaftar dalam driver netbeans anda.

Untuk mengkoneksikannya dengan database yang telah kita buat tadi, klik kanan pada mysql connector –>connect using sehingga muncul jendela seperti berikut:

untuk kolom username dan password sesuaikan dengan configurasi mysql anda.
jika koneksi berhasil, maka akan ada tambahan (jdbc:mysql://localhost:3306/universitas_x [root on Default schema]).

Sekarang kita kembali lagi ke program.
Buat project baru dengan cara pilih File –> New Project

Pilih Java Desktop Application –> Next

isikan project name sesuai dengan gambar dan pada application shell pilih database application –> next

Pada Database Connection silahkan pilih database universitas_x yang telah kita koneksikan tadi. untuk table pilih table mhs –> Next.

Klik Finish dan jalan kan project (klik kanan diatas node project dan run) anda.

Fasilitas sederhana dan mudah digunakan yang telah disediakan oleh netbeans. semoga dapat menjadi bahan belajar untuk teman-teman semua. selamat mencoba…

Jumat, 08 Juli 2011

Aplikasi Database Sederhana Menggunakan JAVA NetBeans


Mungkin tulisan mengenai membuat aplikasi database sudah banyak ditemukan di internet,,, walaupun begitu ketika mengerjakan tugas kuliah yang menyangkut database saya sangat susah menemukan tutorial yang cocok,, kenapa??? mungkin karna masih sedikit yang memahami pembuatan aplikasi database menggunakan metode yang saya gunakan (dengan EclipdeLink),,,termasuk teman-teman ilkom (bisa dibilang tidak ada).. Untuk membuat suatu aplikasi database di java kita bisa menggunakan beberapa metode,,, yaitu dengan menggunakan metode konfensional yang sudah banyak beredar, dengan Hibernate, dan dengan EclipseLink.. Pada tulisan ini saya menggunakan EclipseLink yang sudah mendukung JPA 2.0,, sedangkan hibernate pada saat itu hanya mendukung jpa 1.0 pada netbeans., menurut sumber yang terpercaya menyebutkan bahwa menggunakan teknik ini mempunyai beberapa kelebihan daripada menggunakan metode konvensional yang ada… Apa itu JPA?? Maaf saya tidak akan membahas masalah itu disini,, mungkin lain kali..
Untuk memulai pembutan aplikasi di Komputer anda harus ter-install Netbeans dan MySQL, pada aplikasi ini saya menggunakan Netbeans 6.8.. Anda diharapkan  telah mengerti cara membuat database menggunakan MySQL…
Pertama buatlah sebuah database bernama “DataBase” atau terserah anda,, kemudian buatlah sebuah tabel atau entitas bernama “Mahasiswa” (ingat tabel harus mempunyai sebuah primary key) yang memiliki atribut: Nama, NRP, Tanggal Lahir, dan Alamat.
Membuat Project
Kemudian kita mulai membuat project Java Aplication di Netbeans, caranya: File -> New Project, lalu pada bagian Categories pilih Java dan bagian Project pilih Java Application. Beri nama project ini “Aplikasi”.
Tahap selanjutnya kita akan membuat entity class dimana class ini bertujuan untuk mempresentasikan entity atau tabel dalam suatu database.. Class ini dibuat lewat file->new file, pada categories pilih Persistence selanjutnya pilih entity classes from database
Jendela berikutnya pada database connection pilih new database connection kemudian next. Kemudian isi sesuai gambar dibawah ini
Klik ok, akan muncul jendela berikutnya dan klik button Add All kemudian next. Akan muncul jendela berikutnya dan klik button creat persistence unit, ok,  kemudian next. Pada collection pilih java.util.List dan klik button finish.
Berikutnya kita akan membuat class persistenceUtility sebagai utilities yang membuat koneksi JPA atau EntityManagerFactory:
package aplikasi;
        import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
        public class persistenceUtility {
             public final static EntityManagerFactory entityManagerFactory;
             static {
                   // parameter harus sama dengan nama Persistence Unit
                   // yang ada pada file persistence.xml
                  entityManagerFactory =
                             Persistence.createEntityManagerFactory("AplikasiPU");
            }
            public static EntityManagerFactory getEntityManagerFactory() {
                 return entityManagerFactory;
            }
       }
Selanjutnya kita akan membuat tampilan dari aplikasi database ini,,
Pada combobox cari berdasarkan,, ubahlah model pada property combobox yang sebelumnya dengan nama dan nrp, dengan cara klik kanan pada combobox, kemudian pada model yang sebelumnya berisikan item 1, item 2, item 3, item 4 ubah menjadi nama, nrp.
And then ubahlah nama2 komponen atau variabel seperti dibawah ini:
karna kita memakai Tabel sebagai antar mukanya,, maka kita harus membuat sebuah TableModel untuk mempermudah dalam menambah data dang mengambil data dari tabel. Buatlah class baru bernama TableModel:
package aplikasi;
       import java.util.ArrayList;
       import java.util.Collection;
       import java.util.List;
       import javax.swing.table.AbstractTableModel;
       public class TableModel extends AbstractTableModel {
            private static final long serialVersionUID = 1L;
            private List list = new ArrayList();
            public void updateAll(Collection mhs) {
                list.clear();
                list.addAll(mhs);
                fireTableDataChanged();
            }
            public Mahasiswa get(int index){
                return list.get(index);
            }
            public void setData(List list) {
                this.list = list;
                    // memberi peringatan ke tabel bahwa data berubah
                fireTableDataChanged();
            }
            public void insert(Mahasiswa mhs) {list.add(mhs);
                fireTableRowsInserted(getRowCount() - 1, getRowCount() - 1);
            }
            public void delete(int index) {
                list.remove(index);
                fireTableRowsDeleted(index, index);
            }
            public void update(int index,
                Mahasiswa mhs) {list.set(index, mhs);
                fireTableRowsUpdated(index, index);
            }
            public Mahasiswa select(int index) {
                return list.get(index);
            }
            public int getRowCount() {
                return list.size();
            }
            public int getColumnCount() {
                return 4;
            }
            public Object getValueAt(int rowIndex, int columnIndex) {
                 switch (columnIndex) {
                      case 0:
                           return list.get(rowIndex).getNama();
                      case 1:
                           return list.get(rowIndex).getNrp();
                      case 2:
                           return list.get(rowIndex).getTanggalLahir();
                      case 3:
                           return list.get(rowIndex).getAlamat();
                      default:
                           return null;
            }
            @Override
            public String getColumnName(int column) {
                 switch (column) {
                      case 0:
                           return "Nama";
                      case 1:
                           return "NRP";
                      case 2:
                           return "Tanggal lahir";
                      case 3:
                           return "Alamat";
                      default:
                           return null;
                 }
            }
       }
Selanjutan kita tambahkan TableModel ke tampilan antarmuka, carannya masuk ke bagian source kemudian ubah konstruktor yang sebelunnya:
         public View() {
              initComponents();
         }
Menjadi:
         public View() {
              initComponents();
              tableModel = new TableModel();
              Tabel.setModel(tableModel);
         }
Berikutnya tambahan getter untuk semua komponen pada source antarmuka, ini berguna untuk controler yang akan buat selanjutnya.
public View() {
              initComponents();
              tableModel = new TableModel();
              Tabel.setModel(tableModel);
         }
         public JButton getButtonDelete() {
             return Hapus;
         }
         public JButton getButtonInsert() {
             return Tambah;
         }
         public JButton getButtonUpdate() {
             return Edit;
         }
         public TableModel getTableModel() {
             return tableModel;
         }
         public JTable getTable() {
             return Tabel;
         }
         public JTextField getTextNama() {
             return txtNama;
         }
         public JTextField getTextNrp() {
             return txtNrp;
         }
         public JSpinner getTanggal() {
             return Tanggal;
         }
         public JTextArea getAlmt() {
             return Alamat;
         }
Selanjutnya kita akan membuat class Controler. Class ini bertugas untuk melakukan semua proses manipulasi database. Biasanya Controller menyesuaikan dengan View, misal disini View memiliki tombol INSERT, UPDATE dan DELETE, artinya Controller harus dapat menangani masalah INSERT, UPDATE dan DELETE tersebut. Biasanya Controller menyesuaikan dengan View, misal disini View memiliki tombol INSERT, UPDATE dan DELETE, artinya Controller harus dapat menangani masalah INSERT, UPDATE dan DELETE tersebut. Apa hanya itu? TIDAK! Terdapat sebuah tabel pada VIew yang sebelumnya kita buat, dan yang jadi pertanyaan bagaimana data yang ada dalam database bisa terlihat di table? Artinya kita harus membuat si Controller dapat menangani proses SELECT.
package aplikasi;
      import java.util.Date;
      import java.util.List;
      import javax.persistence.EntityManager;
      import javax.swing.JOptionPane;

      public class Controler {
           private View view;

           public Controler(View view) {
               this.view = view;
           }
           public void insert() {
               EntityManager manager =
                   PersistenceUtility.getEntityManagerFactory().createEntityManager();
               manager.getTransaction().begin();
               try {
                      // buat mahasiswa
                   Mahasiswa mhs = new Mahasiswa();
                      // ubah data mahasiswa
                   mhs.setNama(view.getTextNama().getText());
                   mhs.setNrp(view.getTextNrp().getText());
                   mhs.setTanggalLahir( (Date) view.getTanggal().getValue());
                   mhs.setAlamat(( view.getAlmt().getText()));
                      // simpan ke database
                   manager.persist(mhs);
                      // simpah ke tablemodel
                   view.getTableModel().insert(mhs);
                   manager.getTransaction().commit();
               } catch (Throwable t) {
                   t.printStackTrace();
                   manager.getTransaction().rollback();
               } finally {
                   manager.close();
               }
          }
          public void update() {
                  // dapatkan baris yang terseleksi
              int index = view.getTable().getSelectedRow();
                  // jika tidak ada
              if (index == -1) {
                  // maka proses dibatalkan
              JOptionPane.showMessageDialog(null, "Pilih baris yang akan di-update!");
              return;
               }
               EntityManager manager =
                      PersistenceUtility.getEntityManagerFactory().createEntityManager();
               manager.getTransaction().begin();
               try {
                       // mendapatkan mahasiswa dari tablemodel
                    Mahasiswa mhs = view.getTableModel().select(index);
                       // ubah data mahasiswa
                    mhs.setNama(view.getTextNama().getText());
                    mhs.setNrp(view.getTextNrp().getText());
                    mhs.setTanggalLahir((Date) view.getTanggal().getValue());
                    mhs.setAlamat(( view.getAlmt().getText()));
                       // update mahasiswa ke database
                    manager.merge(mhs);
                       // update mahasiswa ke tablemodel
                    view.getTableModel().update(index, mhs);
                    manager.getTransaction().commit();
               } catch (Throwable t) {
                    t.printStackTrace();
                    manager.getTransaction().rollback();
               } finally {
                    manager.close();
               }
          }
          public void delete() {
                  // dapatkan baris yang terseleksi
             int index = view.getTable().getSelectedRow();
                  // jika tidak ada
             if (index == -1) {
                JOptionPane.showMessageDialog(null, "Pilih baris yang akan di-delete!");
                return;// maka proses dibatalkan
                }
             EntityManager manager =
                  PersistenceUtility.getEntityManagerFactory().createEntityManager();
             manager.getTransaction().begin();
             try {
                      // mendapatkan mahasiswa dari tablemodel
                 Mahasiswa mhs = view.getTableModel().select(index);
                     // menghapus mahasiswa dari database
                 manager.remove(manager.merge(mhs));
                      // menghapus mahasiswa dari tablemodel
                 view.getTableModel().delete(index);
                 manager.getTransaction().commit();
             } catch (Throwable t) {
                  t.printStackTrace();
                  manager.getTransaction().rollback();
             } finally {
                  manager.close();
             }
        }
        public void select() {
             EntityManager manager =
                   PersistenceUtility.getEntityManagerFactory().createEntityManager();
             try {
                  @SuppressWarnings("unchecked")
                  List list = manager.createQuery
                      ("select a from Mahasiswa a order by a.nrp").getResultList();
                  view.getTableModel().updateAll(list);
             } finally {
                   manager.close();
             }
        }
    }
Untuk tahap berikutnya kita akan menambahkan aksi tombol Tambah, Hapus, Edit, dan Refresh. Dengan cara double klik tombol tersebut kemudian isikan kode beriut:
Tambah:
private void TambahActionPerformed(java.awt.event.ActionEvent evt) {
             if(txtNama.getText().equals("") ||
                        txtNrp.getText().equals("") || Alamat.getText().equals("")  ){
                 JOptionPane.showMessageDialog(null, "Data harus diisi dengan lengkap!");
                 return;
             }
             controler.insert();
             txtNama.setText("");
             txtNrp.setText("");
             Alamat.setText("");
         }
Hapus:
private void HapusActionPerformed(java.awt.event.ActionEvent evt) {
               if (JOptionPane.showConfirmDialog
                        (this, "Anda Yakin Akan Menghapus Data Mahasiswa?",
                           "Hapus Mahasiwa", JOptionPane.OK_CANCEL_OPTION) ==
                                JOptionPane.CANCEL_OPTION) {
                        // batalkan aksi hapus
                    return;
               }
               controler.delete();
               txtNama.setText("");
               txtNrp.setText("");
               Alamat.setText("");
         }
Edit:
private void EditActionPerformed(java.awt.event.ActionEvent evt) {
              if(txtNama.getText().equals("") || txtNrp.getText().equals("") ||
                        Alamat.getText().equals("")  ){
                   JOptionPane.showMessageDialog(null,"Data harus diisi dengan lengkap!");
                     return;
              }
              controler.update();
              txtNama.setText("");
              txtNrp.setText("");
              Alamat.setText("");
         }
Refresh:
private void refreshActionPerformed(java.awt.event.ActionEvent evt) {
              controler.select();
}
Dan terakhir tambahkan aksi tombol Cari,, dengan cara yang sama dan isikan kode berikut:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
               EntityManager manager =
                     PersistenceUtility.getEntityManagerFactory().createEntityManager();
               try {
                     List list =   manager.createQuery
                           ("select b from Mahasiswa b where " + "b." +
                               (String)cmbCari.getSelectedItem()+ " like '%" +
                                    txtCari.getText() + "%'").getResultList();
                         // tampilkan hasil pencarian ke table
                     tableModel.setData((List) list);
               } catch (Throwable t) {
                         // perlihatkan error
                     t.printStackTrace();
               } finally {
                         // tutup entitymanager
                     manager.close();
               }
          }
Sampai disini sebenarnya program kita sudah jadi,, tapi untuk membuat tabel pada program kita lebih interaktif maka tambahkan kode berikut pada konstruktor view atau tampilan antar mua program sehingga kontraktornya menjadi:
public View() {
                   initComponents();
                   tableModel = new TableModel();
                   Tabel.setModel(tableModel);
                   controler = new Controler(this);
                       //menampilkan data mahasiswa ketika program pertama kali dijalankan
                   refreshActionPerformed(null);
                   Tabel.getSelectionModel().addListSelectionListener
                                (new ListSelectionListener() {
                        public void valueChanged(ListSelectionEvent e) {
                                // dapatkan baris yang terseleksi
                        int baris = Tabel.getSelectedRow();
                               // cek apakah baris terseleksi
                        if (baris != -1) {
                              // jika terseleksi, tampilkan data di form
                               // dapatkan mahasiswa dari tabel
                             Mahasiswa mhs = tableModel.get(baris);
                                   // tampilkan data di form
                             txtNama.setText(mhs.getNama());
                             txtNrp.setText(mhs.getNrp());
                             Tanggal.setValue(mhs.getTanggalLahir());
                             Alamat.setText(mhs.getAlamat());
                        }
                    }
                });
             }
Akhirnya progam database sederhana telah selesai,,, kita tinggal menambahkan driver MySQL ke dalam project.. Caranya klik kanan pada libraries project kita kemudian pilih Add Library, selanjutnya pilih My SQL JDBC Driver. Dan program database sederhana siap dijalankan… Gampangkan…………!! Malah lebih gampang dari cara yang biasa….

ini link program jadinya  http://www.4shared.com/file/BKQSnbHm/aplikasi.html

Java-MySql: Aplikasi Database dengan Data Gambar (Updated)



Untuk update metode simpan gambar lihat di appGambar 2.0

Bagaimana caranya menyimpan data yang membutuhkan penyimpanan data gambar? Misalkan data pegawai yang membutuhkan penyimpanan gambar dari setiap pegawai. Alternatifnya ada dua, dengan kelebihan dan kekurangan masing-masing. Cara yang pertama adalah dengan membuat field dengan tipe data binary, kemudian menyimpan gambar yang dibutuhkan dalam field di database tersebut. Cara ini membutuhkan manajemen program yang lebih rumit, tapi data gambar akan terjamin, karena tersimpan didalam database yang terintegrasi dengan data lainnya. Kekurangan lainnya adalah ukuran database yang akan membesar dan lambat. Bayangkan saja, sebuah field membutuhkan gambar dengan format jpeg, 200kB. Apabila ada 200 juta record, maka ukuran field yang diperuntukan khusus untuk gambar dengan perhitungan kasar adalah 0.2 MB x 200M = 40 x 10^12 = 40 TB. Belum ditambah dengan ukuran data dari field lainnya, kalau misalkan untuk menyimpan data penduduk Indonesia.

Sedangkan cara lainnya dengan menyimpan gambar dalam bentuk file di folder yang disediakan. Pemrogramannya akan lebih mudah, dan databse tidak ikut terbebani untuk menyimpan data gambar. Selain gambar, kedua cara ini bisa dipakai untuk data yang lain, misalkan attachment berupa dokumen word.

Untuk selanjutnya, yang dibahas adalah cara yang kedua. Sebuah implementasi penyimpanan data yang disertai gambar dengan cara pengkopian file aslinya, dengan menggunakan Java dan mysql. Sudah disediakan download project yang bisa dibuka di Netbeans. Sedangkan untuk aplikasi yang sudah jadi dalam bentuk exe dan jar, juga sudah disediakan. Pastikan untuk menyiapkan database mysql terlebih dahulu dengan mengimport sql script yang disediakan, dengan mengharuskan menggunakan username "root" dengan tanpa password untuk server mysql-nya, agar aplikasi ini bisa mengakses datanya.

Persiapan.
Pada contoh ini menggunakan database mysql. Disarankan untuk menggunakan paket instalasi server yang terintegrasi seperti halnya XAMPP. disana sudah ada mysql dengan phpmyadmin sebagai user interface nya.
Editor, sebenarnya lebih menyenangkan kalau menggunakan notepad2. Tapi, kalau mau memakai yang serba "wah" dan gratis, gunakan inipun dibuat dengan Netbeans 6.5 supaya lebih mudah untuk dipelajari ulang. Saya sendiri sedang mempelajari Netbeans paling baru, 6.7 ML, terutama bagian Netbeans Framework-nya yang keren.
Untuk driver koneksi, memakai mysql-connector-java-5.1.7, sudah ada dalam project, akan dipanggil sebagai lib tambahan apabila project ini dibuka kembali di Netbeans.

Manajemen data.
pertama kali ada pembuatan data baru, data kemudian akan disimpan di database mysql. Setelah penyimpanan data, kita bisa mengambil data kembali yang sudah disimpan dengan pencarian berdasarkan ID.

Manajemen Gambar.
Untuk gambar, saat pembuatan data baru, gambar akan ditampilkan setelah pemilihan file. Saat penyimpanan, gambar akan dikopikan ke folder images, kemudian diganti namanya sesuai dengan ID. Sedangkan pada saat penampilan hasil pencarian data, gambar akan ditampilkan kembali.Untuk menampilkan gambar, dulunya sering memakai komponen JLabel dan dijadikan sebagai image icon. Tapi untuk yang ini memakai canvas dengan meng-override paint(), sehingga lebih bebas untuk penampilan gambar, termasuk bisa melakukan scale-autofit-aspect ratio apabila gambar yang dipilih lebih besar dari tempat yang disediakan.

Langkah pemuatan:

- Untuk mencoba menjalankan aplikasi ini terlebih dahulu harus membuat database. Membuat database di mysql dengan script:

CREATE DATABASE `data`;
USE `data`;
CREATE TABLE IF NOT EXISTS `data_pegawai` (
`id` varchar(10) NOT NULL,
`nama` varchar(50) NOT NULL,
`jenis_kelamin` char(1) NOT NULL,
`alamat` varchar(150) NOT NULL,
PRIMARY KEY (`id`)
);


- Untuk komponen cGambar dengan jenis Canvas, di Editor Netbeans, ubah bagian code, custom creation code, dengan new Painter(); , sehingga pada bagian kode akan menghasilkan baris berikut : cGambar = new Painter(); , dibagian deklarasi pembuatan variabel.

- Bagian penting dari program dengan penjelasannya:

//Membuat File chooser dengan propertiesnya, menentukan filter gambar, setelah itu dipanggil untuk mengambil gambar
private void bBukaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bBukaActionPerformed
javax.swing.JFileChooser jfc = new JFileChooser();
FileFilter jpgFilter, gifFilter, bothFilter;
jpgFilter = new FileNameExtensionFilter("Gambar JPEG", "jpg");
gifFilter = new FileNameExtensionFilter("Gambar GIF", "gif");
bothFilter = new FileNameExtensionFilter("Gambar JPEG dan GIF", "jpg", "gif");
jfc.setAcceptAllFileFilterUsed(false);
jfc.addChoosableFileFilter(jpgFilter);
jfc.addChoosableFileFilter(gifFilter);
jfc.addChoosableFileFilter(bothFilter);
if (jfc.showOpenDialog(this) == jfc.APPROVE_OPTION) {
String f = jfc.getSelectedFile().toString();
eGambar.setText(f);
((Painter) cGambar).setImage(f);

}
}//GEN-LAST:event_bBukaActionPerformed

//Menyimpan Data di mysql dan mengkopikan gambar yang dipilih
private void bSimpanActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bSimpanActionPerformed
String jk = (eL.isSelected() ? "L" : "P");
String perintah = "insert into data_pegawai values (" +
"'" + eID.getText() + "'," +
"'" + eNama.getText() + "'," +
"'" + jk + "'," +
"'" + eAlamat.getText() + "'" +
")";
try {
new NIOCopier(eGambar.getText(), gambar(eID.getText()));
if (stmt.executeUpdate(perintah) > 0) {
JOptionPane.showMessageDialog(this, "Penyimpanan berhasil");
}
} catch (Exception ex) {
cetak(ex.toString());
}
kosongkan();
}//GEN-LAST:event_bSimpanActionPerformed

//Pencarian ID yang sudah disimpan, dan menampilkan gambar kembali sesuai dengan ID
private void bCariActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bCariActionPerformed
String id = eID.getText();
String perintah = "select * from data_pegawai where id = '" + id + "'";
kosongkan();
try {
ResultSet hasil = stmt.executeQuery(perintah);
for (int I = 0; hasil.next(); I++) {
eID.setText(hasil.getString(1));
eNama.setText(hasil.getString(2));
if (hasil.getString(3).equals("L")) {
eL.setSelected(true);

}
if (hasil.getString(3).equals("P")) {
eP.setSelected(true);
}
eAlamat.setText(hasil.getString(4));
((Painter) cGambar).setImage(gambar(id));
}
} catch (Exception ex) {
cetak(ex.toString());
}
}//GEN-LAST:event_bCariActionPerformed

//Mengosongkan Input Field
private void kosongkan() {
eAlamat.setText("");
eGambar.setText("");
//cGambar = new Painter();
((Painter) cGambar).setImage("");
eID.setText("");
eL.setSelected(false);
eP.setSelected(false);
eNama.setText("");
}

//Membuat koneksi ke Database Mysql
public void testDriver() {
try {
java.lang.Class.forName(mySqlDriver);
con = java.sql.DriverManager.getConnection(mySqlUrl, "root", "");
stmt = con.createStatement();
} catch (Exception ex) {
cetak(ex.toString());
}
}

//Menentukan tempat penyimpanan gambar
private String gambar(String id) {
return folder + File.separator + id.trim() + ".jpg";
}

//Class untuk mengkopi file
public class NIOCopier {

public NIOCopier(String asal, String tujuan) throws IOException {
FileInputStream inFile = new FileInputStream(asal);
FileOutputStream outFile = new FileOutputStream(tujuan);
FileChannel inChannel = inFile.getChannel();
FileChannel outChannel = outFile.getChannel();
for (ByteBuffer buffer = ByteBuffer.allocate(1024 * 1024);
inChannel.read(buffer) != -1;
buffer.clear()) {
buffer.flip();
while (buffer.hasRemaining()) {
outChannel.write(buffer);
}
}
inChannel.close();
outChannel.close();
}
}

//Class untuk menampilkan gambar
public class Painter extends Canvas {

Image image;

public void setImage(String file) {
URL url = null;
try {
url = new File(file).toURI().toURL();
} catch (Exception ex) {
cetak(ex.toString());
}
image = getToolkit().getImage(url);
repaint();
}

public void paint(Graphics g) {
double d = image.getHeight(this) / this.getHeight();
double w = image.getWidth(this) / d;
double x = this.getWidth() / 2 - w / 2;
g.drawImage(image, (int) x, 0, (int) (w), this.getHeight(), this);
}
}


Download Aplikasi - appGambar

Download Project - appGambar

Selasa, 05 Juli 2011

Terapi Air Putih Untuk Sembuhkan Banyak Penyakit

Terapi air putih sembuhkan penyakit. Air sangatlah bermanfaat bagi kelangsungan hidup setiap manusia, keberadaannya sangat dibutuhkan tubuh. Air memberi kontribusi lebih dari 2/3 berat tubuh manusia. Tanpa air dalam beberapa hari, kemungkinan besar kita akan mati kehausan.
Kekurangan air dapat menyebabkan dehidrasi pada tubuh kita, yang berakibat kepada kinerja tubuh dan otak. Manusia jadi cepat lupa, sukar menyelesaikan soal matematika sederhana, sulit berkonsentrasi. Dehidrasi juga menyebabkan anda lekas lelah. Dan semua adalah contoh nyata pentingnya air.
Tidak hanya itu, menurut ilmu pengetahuan, 95% otak kita terbuat dari air, 82% darah dari air dan jantung 75%, paru – paru 86%, ginjal 83%. Bayangkan betapa pentingnya keberadaan air pada tubuh kita.
Terapi Air PutihDikarenakan pentingnya air maka tidak heran jika muncul sebuah metode pengobatan bernama terapi air putih. Dimana air putih dijadikan obat untuk menyembuhkan sejumlah penyakit berat seperti jantung, kanker, diabetes, hipertensi dan lainnya.
Cara menerapkan terapi air putih terbilang amat mudah dan tanpa efek samping (kecuali anda akan sering buang air kecil), anda cukup menghabiskan air sebanyak 1.5 liter setiap bangun tidur – sebelum makan atau lakukan aktifitas apapun termasuk gosok gigi – kemudian mandi dan tunggu selama 45 menit baru anda dapat makan dan minum kembali.
Terapi air putih dapat menyembuhkan penyakit-penyakit berikut ini berserta lama waktu terapi:
  1. Tekanan darah tinggi,lama waktu terapi 30 hari
  2. Asam lambung,lama waktu terapi 10 hari
  3. Diabetes,lama waktu terapi 1 bulan
  4. Susah buang air besar,lama waktu terapi 10 hari
  5. Penyakit Kanker,lama waktu terapi 8 bulan
  6. TBC / Tuberculosis,lama waktu terapi 3 bulan
  7. Penyakit Jantung,lama waktu terapi 1 bulan
Jika anda tertarik, silahkan praktekan. Toh tidak ada ruginya sama sekali, dikarenakan terapi air putih tidak memakan biaya, juga tidak ada efek samping fatal. Dan unsur air ini memang sangat dibutuhkan tubuh kita yang 70% nya adalah air. Semoga bermanfaat.
"~~Terima Kasih Atas Kunjungan Anda~~ "