Dengan begitu banyaknya permintaan untuk membuat satu lagi metode untuk simpan data gambar di database, appGambar di blog lama, baru sekarang ini bisa terpenuhi untuk update. Kalau sebelumnya data gambar disimpan diluar dalam bentuk file dan hanya disimpan nama filenya saja, ini menggunakan metode berbeda. Dengan appGambar versi 2.0 ini, kita bisa menyimpan gambar langsung di database dengan untuk field dengan tipe data long blob, kemudian mengambil data untuk ditampilkan.

Seperti dijelaskan sebelumnya, masing-masing metode mempunyai tujuan dan keuntungan yang berbeda. File yang disimpan diluar akan menghemat ukuran data dan kecepatan koneksi database, sedangkan data yang disimpan di dalam database akan menjamin integritas data, untuk mencegah terjadinya kehilangan data.

Aplikasi ini dibuat dengan Netbeans 6.8 berbasis project menggunakan jdk1.6.0_17.

Sebelum mencoba, import file database terlebih dahulu, baru menjalankan aplikasi .exe atau .jar. Program dites dengan menggunakan username default root tanpa password, bagi yang berbeda harus dicompile ulang terlebih dahulu.

Klik Simpan untuk menyimpan setelah mengisikan semua field dan memilih gambar yang disimpan. Klik Cari untuk menampilkan ID yang sudah disimpan.
Struktur Database MySql

1
2
3
4
5
6
7
8
9
10
11
12

DROP DATABASE `data`;
CREATE DATABASE `data` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci;
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,
  `gambar` longblob,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

Source untuk Simpan Gambar

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

   private void bSimpanActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bSimpanActionPerformed
        String jk = (eL.isSelected() ? "L" : "P");
        String perintah = "insert into data_pegawai (id, nama, jenis_kelamin, alamat, gambar) values ("
                + "'" + eID.getText() + "',"
                + "'" + eNama.getText() + "',"
                + "'" + jk + "',"
                + "'" + eAlamat.getText() + "',"
                + " ?)";
 
        try {
            //new NIOCopier(eGambar.getText(), gambar(eID.getText()));
            //if (stmt.executeUpdate(perintah) > 0) {
 
            PreparedStatement ps = con.prepareStatement(perintah);
            //"update data_pegawai set gambar = ? where  id = '" + eID.getText() + "'");
            ps.setBinaryStream(1, new FileInputStream(eGambar.getText()), new File(eGambar.getText()).length());
            int s = ps.executeUpdate();
            if (s > 0) {
                JOptionPane.showMessageDialog(this, "Penyimpanan berhasil");
            }
 
        } catch (Exception ex) {
            cetak(ex.toString());
            JOptionPane.showMessageDialog(this, "Penyimpanan gagal, \n" + ex.toString());
        }
        kosongkan();
    }//GEN-LAST:event_bSimpanActionPerformed

Source untuk Ambil Gambar

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

 //Pencarian ID yang sudah disimpan
    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));
                Blob blob = hasil.getBlob(5);
                ((Painter) cGambar).setImageIcon(new javax.swing.ImageIcon(
                        blob.getBytes(1, (int) (blob.length()))));
            }
        } catch (Exception ex) {
            cetak(ex.toString());
        }
    }//GEN-LAST:event_bCariActionPerformed

Source untuk Tampilkan Gambar

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

    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 setImageIcon(ImageIcon file) {
            image = file.getImage();
            repaint();
        }
 
        @Override
        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 Link:

appGambar_2.0_database.zip
appGambar_2.0_database-kucing.zip
appGambar_2.0.exe
appGambar_2.0.jar
appGambar_2.0-sourcecode.zip

Aplikasi exe dari java dibuat dengan j2eWizard

Note:
Tolong kasih tahu kalau ada link yang bermasalah.

Ps:
Kucingnya suka difoto…