Monday, September 6, 2010

Menyimpan Gambar ke Database Mysql Menggunakan Visual Basic 6.0


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 pilih salah satu gambar

 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)


Related Posts by Categories



8 comments:

Anonymous said...

Matursuwun master Edi....ilmu ini sangat bermanfaat sekali....sukses slalu bwt mas edi (d/ budi UDINUS)

Edi Sugiarto said...

@budi UDINUS.. terimakasih mas budi..,

@anto.. sama sama mas, terimakasih kembali..

sugar~ said...

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 ?

1111 said...

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

Anonymous said...

Terima kasih banyak atas artikel atau tutorialnya, sangat jelas dan sangat bermanfaat bagi saya, sukses selalu untuk Anda...

pencetkibot said...

thanks bro tutorialnya :)
btw buat yang belajar kaya ane, ini ane uploadkan file projectnya

http://www.4shared.com/file/PMDli8lZ/SaveLoadImageMySQL.html

semoga berguna

parker said...

siph membantu bagi pemula kaya saya..
cara gunain kontrol streamnya gmna ya..aku koq gk bisa..
apa pake komponen tertentu.?

tipstugaskita.blogspot.com

Anonymous said...

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




Powered By Blogger