Senang sekali anda masih mengunjungi blog ini,. Kali ini saya akan coba menulis artikel tentang bagaimana menyimpan file gambar pada visual basic 6.0 ke suatu database, dimana pada artikel ini saya menggunakan database mysql. Dalam beberapa aplikasi yang memanfaatkan gambar teknik ini lebih efektif daripada teknik menampilkan gambar melalui pembacaan path / alamat file gambar.
Pertama-tama buat desain table sederhana dengan dua fieldsbb :
CREATE TABLE `mahasiswa` (
`nim` char(15) default NULL,
`foto` longblob
)
Kita memerlukan tipe data longblob untuk menyimpan nilai binary yang besar dari suatu citra. Selanjutnya saya membuat antarmuka sbb :
Selanjutnya kita mempersiapkan variable dari kelas ADODB yakni Connection, Recordset, dan Stream. Khusus untuk ADODB.Stream kita perlukan untuk mengirimkan data dalam bentuk binary.
Dim conn As New ADODB.Connection
Dim adoquery As New ADODB.Recordset
Dim adostream As New ADODB.Stream
Dim strsql As String
Selanjutnya pada event form_load() kita tambahkan dahulu koneksi ke database mysql berikut potongan kodenya.
Private Sub Form_Load()
Set conn = New ADODB.Connection
strsql = "DRIVER={MySQL ODBC 3.51 Driver}; " _
& " DATABASE=coba;" _
& " SERVER=localhost;UID=root;PASSWORD="
conn.Open strsql
conn.CursorLocation = adUseClient
End Sub
Setelah koneksi berhasil maka lanjutkan dengan membuat fungsi untuk simpan gambar ke database. Kita buat dalam bentuk fungsi untuk mempermudah penggunaan dalam pemrograman nantinya. Berikut ini contoh fungsi SavePictureToDB ()
Public Function SavePictureToDB(RS As ADODB.Recordset, _
sFileName As String)
On Error GoTo errSimpan
Dim oPict As StdPicture
Set oPict = LoadPicture(sFileName)
'jika gambar tida ditemukan
If oPict Is Nothing Then
MsgBox "File tidak ditemukan!", vbOKOnly, "Oops!"
SavePictureToDB = False
Exit Function
End If
Set adostream = New ADODB.Stream
adostream.Type = adTypeBinary
adostream.Open
adostream.LoadFromFile sFileName
RS!foto = adostream.Read
Image1.Picture = LoadPicture(sFileName)
adostream.Close
SavePictureToDB = True
Exit Function
errSimpan:
SavePictureToDB = False
End Function
Selanjutnya tambahkan juga fungsi untuk memanggil gambar dari database ke dalam form maka tambahkan fungsi berikut :
Public Function LoadPictureFromDB(RS As ADODB.Recordset, _
foto As Image)
On Error GoTo errLoad
'Jika record tidak ada
If RS Is Nothing Then
Exit Function
End If
Set adostream = New ADODB.Stream
adostream.Type = adTypeBinary
adostream.Open
adostream.Write RS!foto
'proses menyimpan ke bentuk file
adostream.SaveToFile "C:\Temp.bmp", adSaveCreateOverWrite
foto.Picture = LoadPicture("C:\Temp.bmp")
'proses menghapus file temp.bmp
Kill ("C:\Temp.bmp")
LoadPictureFromDB = True
Exit Function
errLoad:
LoadPictureFromDB = False
End Function
Kemudian tombol open fungsinya adalah menampilkan dialog untuk mencari alamat gambar yang akan disimpan, tambahkan kode berikut :
Private Sub cmdOpen_Click()
cd1.ShowOpen
Image1.Picture = LoadPicture(cd1.FileName)
End Sub
Tombol simpan digunakan untuk memproses penyimpanan data ke database berikut ini potongan kode untuk tombol simpan.
Private Sub cmdSimpan_Click()
Set adoquery = New ADODB.Recordset
adoquery.Open "mahasiswa", conn, _
adOpenDynamic, adLockOptimistic
adoquery.AddNew
adoquery!nim = txtNim.Text
If SavePictureToDB(adoquery, cd1.FileName) = True Then
MsgBox "simpan gambar berhasil"
End If
adoquery.Update
End Sub
Untuk tombol load fungsinya adalah menampilkan gambar dari database ke dalam form, tambahkan potongan kode berikut pada cmdload_onclick() :
Private Sub cmdLoad_Click()
Set adoquery = New ADODB.Recordset
strsql = "select * from mahasiswa"
Set adoquery = conn.Execute(strsql)
adoquery.Find "nim='" & txtNim.Text & "'"
If LoadPictureFromDB(adoquery, Image1) Then
End If
adoquery.Close
End Sub
Selanjutnya jika anda jalankan maka seperti ini.
kemudian tekan tombol Simpan.
nah sampai ini maka data telah tersimpan pada tabel.
kemudian jika ingin menampilkan gambar dari database ke form maka isikan nim pada textbox
selanjutnya tekan tombol Load.
semoga bermanfaat
(edi sugiarto)
8 comments:
Matursuwun master Edi....ilmu ini sangat bermanfaat sekali....sukses slalu bwt mas edi (d/ budi UDINUS)
@budi UDINUS.. terimakasih mas budi..,
@anto.. sama sama mas, terimakasih kembali..
boss boleh nanya gk? itu object adodb.stream nya didapat drmn?
saya coba kok gk kluar yah..
apa itu ocx yg mesti di download dulu atau bagaimana ?
wah terima kasih sekali tutorialnya tapi mas edi saya mendapat pesan error runtime 80004005 di line adoquery.Open "mahasiswa", conn, adOpenDynamic, adLockOptimistic itu kenapa ya mas makasih atas tutorialnya :D
Terima kasih banyak atas artikel atau tutorialnya, sangat jelas dan sangat bermanfaat bagi saya, sukses selalu untuk Anda...
thanks bro tutorialnya :)
btw buat yang belajar kaya ane, ini ane uploadkan file projectnya
http://www.4shared.com/file/PMDli8lZ/SaveLoadImageMySQL.html
semoga berguna
siph membantu bagi pemula kaya saya..
cara gunain kontrol streamnya gmna ya..aku koq gk bisa..
apa pake komponen tertentu.?
tipstugaskita.blogspot.com
master jika dalam databasenya ada data berupa text dan saya mau meload text trsbt pada beberapa textbox yg ada di form bagaimana ya? terimakasih saranya
Post a Comment