Skip to main content

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

Comments

  1. makasih y mas, udah mau ngejawab pertanyaan saya,.. tutorialnya bagus banget,..tak oprek-oprek dulu di kos ah,.. he.he..

    ReplyDelete
  2. mas, rarnya pake password y,.. kok rarnya ga' mau kebuka?

    ReplyDelete
  3. @Rachmad
    Masa baru tahu kalo saya baik hati? ;D

    @Mr. SKHAI
    Keduanya dalam bentuk zip, bukan rar, dan tanpa password. Coba dowloan ulang, karena masalahnya pasti download belum selesai sehingga file-nya rusak. Atau bisa didownload juga dari http://www.box.net/shared/tkmntzs2uo dan http://www.box.net/shared/isjj1pdxm9@mbahsomo
    :D
    kenapa mbah?
    Ngomong aja kalo ada yang salah, bilang aja kalo terlalu jelek gambar bart-nya.
    Jadi penasaran, kenapa mbah?

    ReplyDelete
  4. mas, kmaren udh brhasil ngedownload programnya. udah sya tes, alhamdulillah lancar gambarnya mau tersimpan. pas saya coba berikan perintah update, fotonya mau berubah tapi, alamat gambar(eGambar) yang dibacanya masih alamat yang lama. perintah yang saya buat :

    String sql = "update tfoto set Letak_foto=? where nobp='"+jTextfield1.getText+"'";

    trus klo pengen hapus data fotonya gimana mas?. sebelumnya makasih y mas, maaf klo kepanjangan.

    ReplyDelete
  5. @Mr. SKHAI
    Untuk program ini tidak memerlukan penyimpanan letak file yang asli. Misalkan gambarnya berasal dari flashdisk, maka setelah penyimpanan data, gambar akan dikopikan ke folder images di folder bawah folder program. Kalaupun flashdisk sudah dikeluarkan, gambar yang dikopikan masih ada.

    Terlepas dari itu, kalau memerlukan untuk menyimpan, perintahnya adalah :
    String sql = "update tfoto set letak_foto = ' " + eGambar.getText() + " ' where nobp = ' " + eID.getText() + " ' ";


    Sedangkan untuk menghapus file yang sudah tersimpan adalah :
    new File(gambar(eID.getText())).delete();

    atau sederhananya:

    new File("pict_001.jpg").delete();

    ReplyDelete
  6. makasih banyak y om,... skarang sya udah bisa nyimpan, nampilin, ngedit n hapus foto pake java. walaupun baru dapet satu cara.^_^... 1 x lgi makasih banget y om, tutorialnya bermanfaat banget. pa lagi buat newbie kyak saya, jadi semakin tertarik lagi nih untuk memperdalam java..

    ReplyDelete
  7. om, sya buat link alamat om di blog saya bleh ga'?. o y om, satu lagi, bleh ga' saya posting trik2 java om di blog saya?.

    ReplyDelete
  8. @Mr. SKHAI
    Boleh lah. Makasih. Lagipula seringkali artikel yang saya buat membingungkan karena sebenarnya sulit untuk membuat tulisan yang enak buat dibaca. Sehingga dituliskan dengan kata-kata mas sendiri tentu akan lebih menarik

    ReplyDelete
  9. mass agus yang baik,...:D saya orang padang yang lagi TA.... bisa tolong saya nga bikin menu yang bagus dengan flash atauu apa lah... (mengenai aplikasi data pegawai dengan java netbeans) ntar saya tinggal menambahhkan palette nya dengan jar yang mas berikan hahahha<---- mau enak aja nih mas" mohon bantuan nya...

    ReplyDelete
  10. @Roby
    Java tidak bisa digabungkan dengan object flash. Untuk pembuatan menu bisa dengan gambar ataupun dengan menu standard JMenuBar. Kalau di Netbeans tinggal geser-geser saja sudah jadi kok

    ReplyDelete
  11. mbah, saya kemarin udah coba pemanggilan antar frame java menggunakan jTable(untuk table), dan frame pemanggil(berisi jTextField, jYearChooser, jDateChooser untuk menampung data yang akan diklik(saya menggunakan eventmoseclicked mbah.^_^)). kasusnya seperti ini mbah, untuk data yang ada dalam jTable(nama, nomahasiswa), yang nanti variable penampung pada frame pemanggil berupa jTextField, data yang saya klik mau pindah dari jTable ke jTextField frame pemanggil. akan tetapi untuk jYearChooser dan jDateChooser data yang saya klik dari jTable tidak mau pindah ke frame pemanggil. yang saya ingin tanyakan apa listing perintah netbeans yang harus saya pakai, supaya jYearChooser dan jDateChoosernya mau tampil??. adapun listing jYearChooser dan jDateChooser yang saya buat sekarang seperti dibawah ini :
    untuk di Class-nya :
    public class mhsakbidobj {

    private Integer angkatan(jYearChooser);
    private String tggl_lahir(jDateChooser);

    public mhsakbidobj(Integer angkatan,String tggl_lahir){

    this.angkatan = angkatan;
    this.tggl_lahir = tggl_lahir;

    }

    public Integer getangkatan() {
    return angkatan;
    }

    public void setangkatan(Integer angkatan) {
    this.angkatan = angkatan;
    }

    public Date gettgl1(){
    return tgl1;
    }

    public void settgl1(Date tgl1){
    this.tgl1 = tgl1;
    }

    }

    sementara listing untuk di jTablenya(eventmouseclicked-nya) adalah :

    dataTable=new mhsakbidobj();
    TableModel data=tabelBaru1.getModel();

    dataTable.setangkatan(data.getValueAt(tabelBaru1.getSelectedRow(), 0));
    dataTable.settgl1(data.getValueAt(tabelBaru1.getSelectedRow(), 6).toString());

    untuk listing di frame pemanggil jTable-nya(tempat menampung hasil pengklikan) adalah :

    TablMhsAkbid dt=new TablMhsAkbid(this, true);
    dt.setVisible(true);
    mhsakbidobj mho=dt.getTableData();
    if(mho!=null){

    jYearChooser1.setYear(mho.getangkatan());
    jDateChooser1.setDate(mho.gettgl1());

    }

    maaf y mbah kepanjangan, solusinya apa y mbah??? bisa diajarin or bisa mintak contoh program jadinya ga' mbah???

    o y mbah, kataerror di netbeans-nya :

    java.lang.Integer can not be applied to java lang.Object...

    makasih untuk jawabannya y mbah....

    ReplyDelete
  12. @Mr. skhai
    mas kan punya blog, jadi buat aja sebuah artikel percobaan yg belum ketemu jawabannya, jadi ditanyakan solusinya kepada pembaca. setelah itu buat komentar disini, atau buat trackback dengan link ke artikel mas, jadi saya bisa ikutan jawab. daripada memakai kolom komentar yang terbatas dengan source itu. kalau jawabannya nanti aja dulu yah, mau jalan2 dulu. yang jelas errornya karena konversi tipe data dari tabel.

    ReplyDelete
  13. makasih sarannya y om(btul juga baru kefikiran saran dari om), sbelumnya mintak maaf, udah nyebut om mbah(kesalahan teknis.^_^). tpi, tolong postingin jawaban permasalahannya y om. makasih sebelumnya..

    ReplyDelete
  14. @Mr. SKHAI
    Baru dilihat lagi ^^
    Tapi terlalu banyak yang saya aneh dari kode diatas. Misalkan, JYearChooser, saya tidak tahu kalau ada komponen seperti ini di javax.swing, mungkin komponen luar. Object Integer, jarang digunakan secara langsung, lebih mudah menggunakan keyword int. Dan lainnya lagi. Jadi dirapihkan saja dulu, buat postingan. Paling tidak, diupload contohnya nanti saya lihat lagi.

    ReplyDelete
  15. bisa tapi harus di pilih buttonnya.misalnyaklo mo update jtextfield ga bisa ke updatea alert(gambar=null);masa setiap update pilih gambarnya dulu.

    ReplyDelete
  16. @yts
    Nggak mudeng ini ngomongin masalah apa?
    Btw, makasih yah. Di program ini tentu ada banyak kekurangan karena tujuannya cuma sebagai contoh yang bisa dikembangkan sendiri, bukan untuk digunakan sehari-hari

    ReplyDelete
  17. Mas, kebetulan saya lagi cari cara untuk nampilin gambar dan simpan gambar seperti artikel mas ini. Kan yg mas bahas tentang simpan gambar tapi cuma alamatnya aja kan di database? Kalau saya ingin benar2 menyimpan gambar di db gmn caranya ya mas? Terus juga, kalau tampilin gambarnya di JLabel apakah caranya sama dengan menampilkan di canvas?
    Makasih ya untuk jawabannya. :)

    ReplyDelete
  18. @ s
    Kalau untuk menyimpan gambar langsung, prinsipnya: gambar diambil byte lengkapnya, kemudian dimasukkan dengan tipe data binary ke mysql.
    Sedangkan untuk menampilkan gambar di jlabel, gunakan method setIcon.
    Saya harap bisa memberi pencerahan :)

    ReplyDelete
  19. Makasih mas buat pencerahannya. Saya uda bisa simpen gambar ke databasenya.. ^^

    ReplyDelete
  20. Mas, saya bole nanya lg ya?! :)
    Kan mas ud jelasin kalau cara copy gambar gimana. Kalau saya mau hapus gambar yg sudah dicopy itu, gmn caranya ya mas? Jd, misalkan user ud upload image dan image sudah tercopy ke folder tertentu. Kemudian user mau update dan imagenya diganti dengan image lain.

    ReplyDelete
  21. @ s
    Pake aja method File.delete()

    ReplyDelete
  22. Ok mas, uda bisa. Thx. ^^

    ReplyDelete
  23. Mas, saya tanya lg ya. :)
    Kalau copy gambarny itu ke server, gmn ya? Jd, user pake komp di client, dan gambarnya disimpan ke server. Terus spesifikasi foldernya (tempat penyimpanan gambar) bisa user yg setting ga sih mas, mau simpan di mana? Makasih buat jawabannya.

    ReplyDelete
  24. @ s
    Untuk bisa penyimpanan file di server, sediakan sebuah server ftp dengan hak write user.
    Setelah itu gunakan class dengan yang berfungsi untuk mengakses ftp. Sun tidak menyediakan class ini jadi harus mencari dan membuat sendiri.
    Untuk masalah path tempat penyimpanan, tinggal sediakan textfield yang isinya diambil sehingga bebas tujuan kopi file-nya.

    ReplyDelete
  25. sebenernya saya ga gitu ngerti mas dengan ftp. mas bisa kasi contoh ga cara penggunaannya? ato ga, klo mau mencari harus mulai dari mana? thx before. :)

    ReplyDelete
  26. @ s
    Database mysql-nya pake apa? Kalau pake paket server lengkap seperti xampp disitu udah ada. Sedangkan kalo install mysql tersendiri download aja proftp server

    ReplyDelete
  27. kl untuk file gambar yg mau di tampilkan dari database gmn cara mas?
    n gmn carax membuat timer dalam java netbeans mohon bantuanya mas???

    ReplyDelete
  28. @ Anonim
    Kalau untuk menampilkan gambar dari database, dengan cara mengubah tipe data binary menjadi gambar. Mungkin nanti saya buatkan tutorialnya kalo sempat, untuk sementara, silakan cari dulu memakai google.
    Sedangkan untuk membuat Timer di java, dengan cara menggunakan class java.lang.Thread dengan method sleep(). Silakan dipelajari. Apabila menggunakan Netbeans, sudah disediakan class Timer di template yang bisa langsung digunakan.

    ReplyDelete
  29. trimakasih dah mau respon...!
    ohya aq dah dpt kl yg pengunaan timernya.., tp kl menyimpan file gambarnya kedalam database lom juga rampung masih kebinggungan cara...dan juga dah search di om google lom nemukan yg tepat....mohon pencerahannya kang!
    - kl boleh nanya lagi tentang menampilkan random file dalam 1 kali tampil dan tampilan yg kedua berbeda serta yg berikutx tidak dpt menampilkan file yang sudah dirandom tidak muncul dengan file yg sama....ini juga aq masih kebingungan nech...! yang akan dirandom di keluarkan dari databse nantix.?

    kirimi linkx biar aq download nanti kang..!
    mailq : durechintosh@gmail.com

    terima kasih sebelumnya.....!

    ReplyDelete
  30. @ Anonim
    - Untuk menyimpan gambar, seperti yang sudah dijelaskan sebelumnya, akan saya buatkan artikel kalau ada waktu. Tunggu saja yah
    - Silakan memakai fungsi rand() di mysql.
    Select * from tabel order by rand();

    ReplyDelete
  31. mas, saya sudah mendownload project applikasi gambar...
    nah ngambil sintaks buat bBuka...tapi ko selalu gagal y??
    errornya di bawah ini:


    Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.awt.Canvas cannot be cast to gambar1$Painter

    tolong di bales nya y mas?thaks's

    ReplyDelete
  32. @ Anonim
    Coba perhatikan, Untuk menggunakan method bBuka membutuhkan internal class Painter. Jadi jangan tertinggal untuk ikut dikopi.

    ReplyDelete
  33. salam kenal sob,,,
    infonya keren--keren...
    saya jadi sangat tertarik,,,
    ajari java ya sob,,,

    http://trojandecoder.blogspot.com

    ReplyDelete
  34. @IdeGue! Blog
    Inggih mas, maturnuwun, kulo ugi mboten ngertos...
    Kalo mau nitip link di komentar, belajar dulu a href yah :D

    ReplyDelete
  35. salam kenal mas...
    btw kalo pake jdatechooser truus datanya di simpan ke database methodnya gmn y mas??
    nb: javanya pake netbeans 6.5 databasenya pake mysql mas...
    trimakasih....

    ReplyDelete
  36. @yasha0508
    Jdatechooser yang mana?

    Jdk standard tidak punya class Jdatechooser...

    ReplyDelete
  37. slm knl mas... mw nanya ni, klo manggil foto td untuk buat laporan gmn y mas?? laporanx pakai inet crstal clear atw pakai java script jg blh...

    ReplyDelete
  38. @Defni Yusnita
    Gunakan tipe field picture dilaporan, kemudian memanggil alamat file gambar yg tersimpan berdasarkan id row yang ditampilkan

    ReplyDelete
  39. Tx Berat OM, tutorial ini benar2 sangat membantu saya!!!

    Btw cara nyimpen ukuran file gambarnya (size) ke database gmn caranya om?
    -saya pake mysql-
    makasih sebelumnya

    ReplyDelete
  40. @gi3
    Gunakan method length di system.io.File untuk mendapatkan ukuran file, setelah itu simpan di database.

    ReplyDelete
  41. hehe,,,
    belum paham Om, bisa di kasih contoh XD

    ReplyDelete
  42. om kalo misalnya mw save di beda Directory bisa?

    ReplyDelete
  43. bisa upload project yang barunya ga? ga bisa di downlod.. helpme...

    ReplyDelete
  44. saya sangat tertarik dengan tutorial anda :)
    saya mau tanya, jika membuat aplikasi tingkat multy user, dengan konsep penyimpanan gambar di folder, bagaimana cara komputer lain bisa akses foto tersebut?

    mohon pencerahan dari om agus, saya bingun disitu om :D

    ReplyDelete
  45. @andreas

    Download juga dari http://www.box.net/shared/tkmntzs2uo dan http://www.box.net/shared/isjj1pdxm9

    ReplyDelete
  46. @Tepoci
    Gambar harus disimpan di database jaringan, sehingga bisa diakses dari mana saja yg terhubung komputer tersebut. Gunakan proyek ini untuk contoh:
    http://blog.om4g.us/2010/04/appgambar-2-0-prototipe-java-untuk-simpan-gambar-di-database/

    ReplyDelete
  47. lho om misal file gambar disimpan dalam bentuk string bisa kan??

    ka ntopik diatasa tadi menyebutkan jika make longblob kuatirnya ntr databasenya kagak muat gt cz saya gag baca ampe ahir seh gimana jika dipake text aja kan waktu input data berupa string gt

    sebelumnya thx om..

    ReplyDelete
  48. om, bisa berikan potongan coding yg utk memanggil alamat file gambar yg dsimpan ke laporan? sbgai pncerahan bgtu, soalx buntu bnget nih.

    ReplyDelete
  49. This comment has been removed by the author.

    ReplyDelete
  50. kereeen Om... ntar kalo saya bisa java, saya berambisi untuk membagi2 ilmu saya ke orang laen kayak yg Om lakuin ne.. thanks ya om...

    aplikasinya sudah saya jalankan ne,, dan berhasil.. saya modif dikit ya,.. hanya menambahkan beberapa field dlm database dan tambahan textbox nya.. :)

    ReplyDelete
  51. @Zul Fadli
    Coba juga yg di website baru, http://om4g.us

    ReplyDelete
  52. oke Om.. siap siaaaap... :-)

    ReplyDelete
  53. Hallo Om Agus..
    saya udah liat projeknya, yang saya ingin tanyakan, bagaimana gambarnya dapat disimpan di folder ya? soalnya image yang sudah di upload kok ga ada tersimpan di folder image di projeknya ya?
    mohon pencerahannya yah ^^

    ReplyDelete
    Replies
    1. Coba cari id yg sudah tersimpan. Apabila gambarnya keluar lagi, berarti gambar tersimpan. Gambar tersimpan di working directory program. Coba lakukan debug untuk bisa tahu lokasi nya

      Delete
  54. harusnya tersimpan di C:\Users\USER\Documents\NetBeansProjects\Recruitment\images

    tetapi di programnya tidak ada loh om..

    ReplyDelete
  55. @Indah
    Coba lakukan debug untuk menampilkan working folder supaya bisa tahu lokasi penyimpanan. Program harus punya hak akses pada folder tersebut. Selain itu tampilkan error dari try catch.
    atau
    Coba gunanya penyimpanan database sehingga tidak ada masalah seperi ini:
    http://blog.om4g.us/2010/04/appgambar-2-0-prototipe-java-untuk-simpan-gambar-di-database/

    ReplyDelete
  56. nice...
    thanks buat sharing nya, sangat berguna bgt buat saya

    ReplyDelete
  57. mas mohon pencerahannya dong ,
    codingan ini untuk mengetahui letak file gambarnya kan yah??
    folder = System.getProperty("absensi.dir") + File.separator + "images";

    klo saya ingin mengambil gambar dari folder lain bgmn tuh mas, misalnya saya mau ambil dari
    D:\data\gambar\images

    ReplyDelete
  58. @hamdy

    Ganti atau buat perintah set property.
    System.setProperty("absensi.dir", "D:\data\gambar\images");

    ReplyDelete
  59. mas setelah saya buat terdapat pesan error ini..
    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at beasiswa.program.penilaian.formSeleksi1$Painter.paint(formSeleksi1.java:670)
    at sun.awt.RepaintArea.paintComponent(RepaintArea.java:264)
    at sun.awt.RepaintArea.paint(RepaintArea.java:240)
    at sun.awt.windows.WComponentPeer.handleEvent(WComponentPeer.java:347)

    ReplyDelete
  60. @imam
    Biasanya karena sebuah objek belum di-create atau sudah di destroy, tapi diberi perintah paint. Jadi saya belum tau kalau belum lihat baris source code lengkap.

    ReplyDelete
  61. makasih Om
    ni ilmu berharga banget

    ReplyDelete
  62. mas mau nanya, merubah gambar dan programnya menampilkan langsung gambar yang baru ?

    untuk update gambar dengan coding sama dengan insert nya "new NIOCopier(eGambar.getText(), gambar(textNoRegistrasi.getText()));"

    gambar di folder nya sudah ganti tapi di programnya yng tampil gambar yang lama
    kecuali programnya di restart gambar yang baru

    mohon jawabannya

    ReplyDelete
  63. @L-kyuu
    Lupa belum di-flush. Rubah bagian setimage:

    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);
    image.flush();
    repaint();

    }

    ReplyDelete
  64. makasih Om Cepat Membalasnya
    dan makasih Om jawabannya

    Semoga Sukses !! :)

    ReplyDelete
  65. gan, nebeng yaa.. kalo untuk editnya gimana source nya gan ? q kbentur di gmbar ny nih,,, untuk source update ny.. kalo simpan udh bisa... mhon pncerahan nya yaa ... hehe

    ReplyDelete
  66. @Hasnan
    Ubah perintah di bSimpan, initinya seperti ini:

    //Menyimpan Data dan Gambar
    private void bSimpanActionPerformed(java.awt.event.ActionEvent evt) {
    String jk = (eL.isSelected() ? "L" : "P");
    String perintahInsert = "insert into data_pegawai values (" +
    "'" + eID.getText() + "'," +
    "'" + eNama.getText() + "'," +
    "'" + jk + "'," +
    "'" + eAlamat.getText() + "'" +
    ")";
    String perintahUpdate = "update data_pegawai set " +
    "nama = '" + eNama.getText() + "'," +
    "jenis_kelamin = '" + jk + "'," +
    "alamat = '" + eAlamat.getText() + "' " +
    "where id = '" + eID.getText() + "'";
    try {
    if (stmt.executeUpdate(perintahInsert) > 0) {
    JOptionPane.showMessageDialog(this, "Penyimpanan berhasil");
    }
    new NIOCopier(eGambar.getText(), gambar(eID.getText()));
    } catch (Exception ex) {
    cetak(ex.toString());
    }
    try {
    if (stmt.executeUpdate(perintahUpdate) > 0) {
    JOptionPane.showMessageDialog(this, "Update berhasil");
    }
    new NIOCopier(eGambar.getText(), gambar(eID.getText()));
    } catch (Exception ex) {
    cetak(ex.toString());
    }
    kosongkan();
    }

    ReplyDelete
  67. Om kl mau nampilin foto sma data lainnya gmana scriptnya? maklum newbie nih

    ReplyDelete
  68. mas, koq muncul pesan

    Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.awt.Canvas cannot be cast to View.Admin.TambahBuku$Painter


    padahal kelas painternya uda dicopyin

    ReplyDelete
  69. Dari: Farhan

    Om agus, kok gk bisa di simpan?? aq buat database dengan field sbb:
    id value=15
    nama value = 25
    jenkel value=15
    alamat value=50


    terus gambar itu di simpan di mana?

    ReplyDelete
  70. Dari : Farhan

    Udah Berhasil OM,, saya yang salah edit coding nya..
    heheheh

    ReplyDelete
  71. Dari: Farhan

    Oh iya om agus,, gmn cara menampilkan foto yang sudah di save tadi ke laporan

    saya memakai i-net crystal clear

    gmn ya om agus??

    ReplyDelete
  72. tolong minta project nya donk om, gak bisa di download tu..

    ReplyDelete
  73. Om4gus punya referensi atau cara untuk attach file word ke database? Setelah itu file word tersebut kita liat sama halnya iReport yg bisa menampilkan berbagai macam data yg udh di inputkan ke database kita. Kalo ada bisa kasih tau saya om, atau mungkin om punya referensi lain yg tujuan nya sama silahkan aja. Aku tunggu om bantuannya

    ReplyDelete
  74. mas mau tanya nih,saya bikin program java terus udah di compile,tidak ada eror,pas saya clean and build juga tidak ada error
    nah pas saya eksekusi file yg di folder dist format jar nya,,ada pesan erorr 18 Report file not found : file:C:/Users/ACER/Documents/NetBeansProjects/testing/dist/src/laporan/laporananggota.rpt

    itu kenapa ya? mohon pencerahanyya mas :D
    makasih sebelumnya

    ReplyDelete
  75. @ jefri handrifman
    Namanya runtime error, coba dicek apakah lokasi folder laporananggota.rpt sudah betul?

    ReplyDelete
  76. Assalamu'alaikum,
    wiih, terima kasih banyak Mas buat sharing ilmu nya .

    mas mau tanya,
    kalo untuk upload video di Java itu gmn ya ?
    saya dapet task bikin semacam 'movie maker' gitu .

    Trims

    ReplyDelete
  77. @Heru,

    Sederhananya, sama saja dengan gambar, yang pertama perlu diganti filternya supaya bisa video misalkan mp4.

    bothFilter = new FileNameExtensionFilter("Gambar JPEG dan GIF", "jpg", "gif");

    ReplyDelete
  78. mas kq link downloadny gagal?
    mhon bantuannya

    ReplyDelete
  79. mas kq link downloadny gagal?
    mhon bantuannya

    ReplyDelete
  80. Link nya udah rusak mas, bisa diperbaiki? Terima kasih..

    ReplyDelete
  81. Selamat malam gan, linknya sudah mati, bisa diperbaiki? Terimakasih

    ReplyDelete
  82. Apakah ada link download terbaru?

    ReplyDelete

Post a Comment

Popular posts from this blog

PHP: Kalkulator

Pada intinya, kalkulator berbasis web ini menggunakan tiga dasar, yaitu CSS, PHP, dan HTML. CSS (Cascading Style Sheets) agar mudah mengatur tampilan, PHP (PHP Hypertext Prepocessor) untuk operasi perhitungan, dan HTML (Hypertext Markup Language) untuk pembuatan form kalkulator. Kesemuanya dalam bentuk dasar dengan logika perhitungan sederhana untuk melakukan perhitungan. Sedangkan array diatas digunakan untuk debugger dan memahami jalannya algoritma. <html> <head> </head> <body> <style type="text/css"> .Hasil { color: #fcc; background-color: blue; font-size: 4em; border: 1px solid #660; padding: 4px; } .Operator { color: #fcc; background-color: #900; font-size: 1.5em; border: 1px solid #660; width: 100px; padding: 4px; } .Angka { color: white; background-color: #660; font-size: 1.5em; border: 1px solid #660; padding: 4px; width: 100px; } </style> <?php function Hitung($b1,$b2,$o){ switch($o){ case '+': return $b1

Pembuatan PDF di PHP dengan FPDF dan HTML2FPDF

Untuk membuat pdf dengan menggunakan php, kita bisa menggunakan fpdf yang berbasis class. Sedangkan html2fpdf digunakan untuk mengubah html menjadi pdf. Dengan hanya menggunakan fpdf, kita harus menentukan semua hal yang mengatur tampilannya berbasis code sesuai dengan aturan dan fungsi yang disediakan class tersebut. Dengan menggunakan html2fpdf, kita cuma perlu membuat sebuah file html dan tampilannya langsung diubah menjadi sebuah file pdf, tentu dengan beberapa keterbatasan dan perubahan tampilan. Saat ini, fpdf terbaru pada versi 1.6 sedangkan html2fpdf versi 3. Instalasi: + Ekstrak file fpdf dan html2fpdf. Sebenarnya html2fpdf merupakan inheritance dari class fpdf, tapi class di fpdf yang disdertakan di paket html2fpdf telah dimodifikasi dari aslinya sesuai dengan kebutuhan konversi tersebut. Class original dari fpdf akan kita pakai untuk pembuatan pdf secara manual, bukan dari html. + Ganti nama file fpdf.php misalkan menjadi fpdf16.php. Karena untuk bebrapa versi instalasi php