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
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.
panggil method diatas dengan event keycode = 13 atau ketika terjadi penekanan tombol enter.
selanjutkan kita akan membuat perintah untuk membuka Opendialogfile di tombol btn_ambil_gambar_click.
selanjutnya kita akan membuat perintah penyimpanan gambar ke database di btn_simpan_gambar_click.
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.
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.
terima kasih ya gan
ReplyDeletesama2 mba, semoga bermanfaat
ReplyDeletegan kode_exist itu apa ya ? saya error disitu gan
ReplyDeleteitu tinggal ditambahin 'Dim' aja di depannya..
Deletesori ketinggalan harusnya dim kode_exist as integer, itu variable buat nampung hasil pengecekan
Deleteitu parameter aja om buat nampung hasil pencarian kodenya udah ada apa belum
ReplyDeletegan, kalau mau nge-load gambar paling terakhir dipasang saat buka form lagi tau gak?
ReplyDeletelokasi gambar atau data binarynya di simpan di app.config atau app.setting.
Deletelakukan 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
pgambar itu apa yah kegunaan nya.
ReplyDeleteko saya salah nya disitu yaah.
kok keluar tulisan ini ya " object reference not set to an instance of an object " letak salahnya dimana ya hehe
ReplyDeletekl misalnya kita mau menampilkan gbr yang udah tersimpan td di vb net gmn bos??? tolong pencerahannya
ReplyDeleteItu kan gambar yg tersimpan di Access tulisannya "long binary data". ngga bisa dibuka ya?
ReplyDeleteSoale biasanya klo insert file gambar kan tertulis nama gambar di Accessnya