Berbagi Cerita, Catatan, Pengalaman ngoding dan Secangkir Teh Hangat.

Monday, January 2, 2017

Menyimpan Gambar di Database Access dengan VB.net

Bagaimana Menyimpan Gambar di Database MS Access 2007 menggunakan VB.Net.


Ada beberapa cara dalam mengakses gambar, ada yang disimpan path nya saja ada juga yang disimpan gambarnya dalam bentuk byte.

kali ini kita akan membahas penyimpanan (CRUD) gambar di database, menggunakan Parameter OleDBParameter

Sample database.

kita akan membuat sebuah database simple yang terdisi dari 2 field, 1 field sebagai kode gambar, 1 field sebagai gambarnya dan simpan dengan nama table "gambar", seperti dibawah ini.








Sampe Form.

Setelah kita membuat database seperti gambar diatas, sekarng kita membuat 1 buah form sederhana yang terdiri dari :

1. Textbox : tKodeGambar
2. PictureBox : pGambar
3. Button : btn_ambil_gambar
4. Button : btn_simpan_gambar
5. Textbox : txtpath














Script.

Import namespace yang dibutuhkan.

Imports System.Data.OleDb
Imports System.IO


Buat Connection String ke dattabase MS Access

Dim connection_string As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Application.StartupPath & "\database.accdb;Persist Security Info=False;"



Buat 1 variable untuk menampung hasil pengecekan apakah kode gambar yang dimasukan sudah ada,
dan buat method untuk pengecekannya.

Private Sub cek_kode_gambar()
        Dim gambar() As Byte
        kode_exist = 0
        Using iKon = New OleDbConnection(connection_string)
            If iKon.State = ConnectionState.Open Then iKon.Close()
            iKon.Open()
            Using iCmd = New OleDbCommand("Select * from gambar where kodegambar = @kode", iKon)
                iCmd.Parameters.Add(New OleDbParameter("@kode", tKodeGambar.Text))
                Using reader As OleDbDataReader = iCmd.ExecuteReader
                    If reader.HasRows = True Then
                        While reader.Read
                            gambar = reader(1)
                            kode_exist = 1
                        End While
                    End If
                End Using
            End Using
        End Using
        If kode_exist = 1 Then
            Using memstream As New System.IO.MemoryStream(gambar)
                pGambar.Image = Image.FromStream(memstream)
            End Using
        End If
 End Sub


panggil method diatas dengan event keycode = 13 atau ketika terjadi penekanan tombol enter.

Private Sub tKodeGambar_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles tKodeGambar.KeyDown
        If e.KeyCode = 13 Then
            cek_kode_gambar()
        End If
End Sub


selanjutkan kita akan membuat perintah untuk membuka Opendialogfile di tombol btn_ambil_gambar_click.


Private Sub btn_ambil_gambar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_ambil_gambar.Click
        'picture box akan kita seting lebar 170 dan tingginya 227, 
        'di sesuaikan juga propertis weight dan heigh nya di picture box
        Dim lebar As Integer = 138
        Dim tinggi As Integer = 157
        'deklarasi open file dialog untuk memilih gambar yang ingin dimasukan kedalam database
        Dim open_file As New OpenFileDialog
        With open_file
            'filter open file dialog hanya memunculkan file dengan extensi jpg
            .FileName = ""
            .Filter = "File Jpg (*.jpg)|*.jpg"
            .FilterIndex = 1
            'jika dialog open file di cancel batalkan operasi.
            If .ShowDialog = DialogResult.Cancel Then Exit Sub
            Dim igambar As Image = Image.FromStream(.OpenFile())
            'buat bitmap dengan ukuran lebar dan tinggi sesuai dengan yang dideklarasikan
            Dim ngambar As New Bitmap(lebar, tinggi)
            Dim grap As Graphics = Graphics.FromImage(ngambar)
            With grap
                .FillRectangle(Brushes.White, New Rectangle(0, 0, lebar, tinggi))
                .DrawImage(igambar, 3, 3, lebar - 6, tinggi - 6)
                .Flush()
                .Dispose()
            End With
            pGambar.Image = ngambar
            txtpath.Text = .FileName
        End With
 End Sub



selanjutnya kita akan membuat perintah penyimpanan gambar ke database di btn_simpan_gambar_click.



Private Sub btn_simpan_gambar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_simpan_gambar.Click
        Using iKon = New OleDbConnection(connection_string)
            If iKon.State = ConnectionState.Open Then iKon.Close()
            iKon.Open()
            Dim transaction = iKon.BeginTransaction
            Try
                Using iCmd = New OleDbCommand("insert into gambar values(@Kode,@gambar)", iKon)
                    iCmd.Transaction = transaction
                    iCmd.Parameters.Add(New OleDbParameter("@Kode", tKodeGambar.Text))
                    Dim gambar() As Byte
                    Dim img As New Bitmap(pGambar.Image)
                    Using memStream As System.IO.MemoryStream = New System.IO.MemoryStream
                        img.Save(memStream, Imaging.ImageFormat.Jpeg)
                        Dim imgArray = memStream.GetBuffer
                        gambar = imgArray
                    End Using
                    iCmd.Parameters.Add(New OleDbParameter("@gambar", gambar))
                    iCmd.ExecuteNonQuery()
                End Using
                transaction.Commit()
                MsgBox("berhasil")
            Catch ex As Exception
                transaction.Rollback()
                MsgBox("error simpan gambar" & vbNewLine & ex.Message)
            End Try
        End Using
 End Sub



Run.

ketika kode gambar ditemukan, program akan langsung memunculkan gambar pada Picturebox yang sudah disediakan.














jika kode baru, klik ambil gambar .
















































Bahasa : VB.Net
IDE : Visual Studio 2010
Framework : .Net 3.5
Database : MS Access 2007

Terima kasih sudah membaca Bagaimana Menyimpan Gambar di Database MS Access 2007 menggunakan VB.Net.

sekian dulu berbaginya, jangan lupa like, komen, share.
jangan lupa sertakan link blog ini sebagai sumber kalo kalian mau paste tutorial ini di blog kalian.

Share:

12 comments:

  1. gan kode_exist itu apa ya ? saya error disitu gan

    ReplyDelete
    Replies
    1. itu tinggal ditambahin 'Dim' aja di depannya..

      Delete
    2. sori ketinggalan harusnya dim kode_exist as integer, itu variable buat nampung hasil pengecekan

      Delete
  2. itu parameter aja om buat nampung hasil pencarian kodenya udah ada apa belum

    ReplyDelete
  3. gan, kalau mau nge-load gambar paling terakhir dipasang saat buka form lagi tau gak?

    ReplyDelete
    Replies
    1. lokasi gambar atau data binarynya di simpan di app.config atau app.setting.

      lakukan penyimpanan di app.config atau app.setting ketika load gambar, nah ketika form load cek ke app.config atau app.seting dulu, di cek dulu kalo url cek url valid atau tidak, kalo binadry cek juga valid atau tidak, baru tampilkan

      Delete
  4. pgambar itu apa yah kegunaan nya.
    ko saya salah nya disitu yaah.

    ReplyDelete
  5. kok keluar tulisan ini ya " object reference not set to an instance of an object " letak salahnya dimana ya hehe

    ReplyDelete
  6. kl misalnya kita mau menampilkan gbr yang udah tersimpan td di vb net gmn bos??? tolong pencerahannya

    ReplyDelete
  7. Itu kan gambar yg tersimpan di Access tulisannya "long binary data". ngga bisa dibuka ya?
    Soale biasanya klo insert file gambar kan tertulis nama gambar di Accessnya

    ReplyDelete

Powered by Blogger.

Ads 468x60px

Freelancer

Jaka Pradesa

Data Entry and Softwares

E: j.r.pradesa@gmail.com

Hire me on Freelancer.com

Social Icons