Insert dan Update Field Gambar (Blob) Pada MySql Server



Posting colongan, lagi ada rehat mosting aja lah :mrgreen:

************************************************************************************
Sebelumnya thx yang udah share ilmu di YM maaf ane suka sering (banget) nanya2 :oops: maklum nubi :lol: , thx juga udah sabar bgt :) , kita sama2 lagi belajar, dunia IT itu tidak ada batasnya, yang membatasi hanya pikiran, dan pad keyboard yang mulai lepas :lol:

Untuk yang kasih komeng, tolong jangan lewat imel yak, agak jarang dibuka soalnya :mrgreen: tanya langsung via YM saja :)

and remember google is ur best friend…

************************************************************************************

Ok langsung saja.

Sepengetahuan saya, tipe field untuk menampung gambar di MySQL itu berupa tipe BLOB yah?? CMIIW karena setelah saya coba buat ternyata tidak ada tipe IMAGE di MySQL Server :roll: :roll:

Nah pas koding bingung di perintah sql nya misal saya punya table T_User isinya ada field Nama, Alamat, dan Telp, biasanya untuk meng-insert saya menggunakan perintah seperti ini

INSERT INTO t_user VALUES ('Brian','JL. Landak NO 10','022-231202')

Sedang untuk update saya biasanya menggunakan perintah

UPDATE t_user SET alamat='JL Belimbing NO 19' WHERE nama='Brian'

Perintah di atas tentu mudah, karena tipe dari field nya berupa string, lalu bagaimana insert dan update pada field tipe gambar??

Setelah semedi, ternyata jawabanya adalah dengan menggunakan fungsi yang ada di MySQL yaitu LOAD_FILE(‘filepath’) untuk lebih jelasnya bisa cek ke sini

Misalkan pada tabel User contoh di atas kita tambahkan satu field lagi dengan nama “Gambar” dan bertipe Blob, dan kita ingin meng-insert gambar yang ada di path “C:\Documents and Settings\Xenion\My Documents\contoh_gambar.bmp” jadi perintah sql nya seperti ini

INSERT INTO t_user VALUES ('Brian','JL SukaSirna No 22','022-231091',LOAD_FILE('C:\Documents and Settings\Xenion\My Documents\contoh_gambar.bmp'))

Setelah di execute ternyata… GAGAL hahaha.. :lol: kenapa gagal??
karena eh karena kesalahan ada di path delimiter nya itu tuh tanda “\” pada nama file, ini entah MySQL-nya ga tau delphi-nya yang maunya nerima karakter ini –> “/” jadi nama file harus dimodif dikit menjadi “C:/Documents and Settings/Xenion/My Documents/contoh_gambar.bmp” bukan yang ini “C:\Documents Settings\Xenion\My Documents\contoh_gambar.bmp

Jadi untuk perintah insert yang bener bentuk sql nya seperti ini

INSERT INTO t_user VALUES ('Brian','JL SukaSirna No 22','022-231091',LOAD_FILE('C:/Documents and Settings/Xenion/My Documents/contoh_gambar.bmp'))

Begitu juga dengan perintah update

UPDATE t_user SET gambar=LOAD_FILE('C:/Documents and Settings/Xenion/My Documents/contoh_gambar.bmp') WHERE nama='Brian'

Nah coba di test :cool: :cool:

=====================================================
–> Bagaimana merubah path delimiter dari “\” menjadi “/” menggunakan Delphi
=====================================================

Ok balik lagi ke Delphi tercinta :oops: berikut ini cara merubah dari nama file “C:\Documents Settings\Xenion\My Documents\contoh_gambar.bmp” menjadi “C:/Documents Settings/Xenion/My Documents/contoh_gambar.bmp”. Gunakan fungsi StringReplace


var namaFileSalah,namaFileBenar:String;
namaFileSalah:='C:\Documents Settings\Xenion\My Documents\contoh_gambar.bmp';
namaFileBenar:=StringReplace(namaFileSalah,'\','/',[rfReplaceAll]);


=====================================================

–> Error handling jika user menginputkan gambar dengan ukuran sebesar GABAN!

=====================================================

Masih seputaran delphi, terkadang user secara tidak sengaja memasukan gambar dengan ukuran yang besar, yang entah mengapa MySQL ODBC tidak dapat mengirimkan packet gambar tersebut (mungkinkah harus ada yang diseting di ODBC nya??) berikut ini tampilan errornya

Nah agar gambar yang diinputkan oleh user tidak menimbulkan error seperti di atas, batasi saja ukuran dari gambarnya, misal ukuran yang diizinkan adalah 100×100 , begitu user menginput gambar dengan ukuran lebih besar dari 100×100 maka akan muncul pesan peringatan, berikut contoh kodenya


var gambar:TBitmap;
gambar:=TBitmap.Create;

if OpenPictureDialog1.Execute then begin
gambar.LoadFromFile(OpenPictureDialog1.FileName);

if (gambar.Width>100) or (gambar.Height>100) then begin
ShowMessage('Ukuran Gambar Tidak Boleh Lebih Besar Dari 100x100, Terima Kasih');
gambar.Free;
exit;
end;

Sekian dulu semoga dapat sedikit membantu. :cool: