Ini adalah artikel pertama di awal tahun 2009 M/1430 H. sebenarnya udah lama sich mau posting artikel ini, tapi ada kendala sedikit, tapi Alhamdulillah hari ini artikel ini bisa release.
Artikel ini membahas bagaimana membuat program untuk memasukkan gambar ke database dan bagaimana menampilkan file gambar tersebut kedalam picture box.. Pada artikel ini saya menggunakan Vb 2008 express dengan database SQL 2008 express. Tapi ini bisa di gunakan untuk versi-versi sebelumnya.
Artikel ini membahas bagaimana membuat program untuk memasukkan gambar ke database dan bagaimana menampilkan file gambar tersebut kedalam picture box.. Pada artikel ini saya menggunakan Vb 2008 express dengan database SQL 2008 express. Tapi ini bisa di gunakan untuk versi-versi sebelumnya.
Tahap pertama adalah dengan membuat form seperti gambar diatas, dan jangan lupa tambahkan 4 button, 1 textbox, OpenfileDialog dan Picturebox.
Di asumsikan kita memiliki table dengan nama TbPic dengan field (ID dan Pic). Sekarang kita masuk ke coding.
Untuk menampilkan file gambar kedalam Picture box ikuti sintaks berikut.
OFD.Filter = "Image Files (*.jpg, *.bmp, *.gif, *.png)*.jpg; *.bmp; *.gif; *.png"
OFD.ShowDialog()
txtFileName.Text = OFD.FileName
txtFileName.SelectionStart = txtFileName.Text.Length
If Trim(txtFileName.Text) <> "" Then
PicBox.Image = Image.FromFile(txtFileName.Text)
End If
Ikuti sintaks dibawah untuk memasukkan gambar kedalam table.
Try
Dim ms As New System.IO.MemoryStream()
PicBox.Image.Save(ms, PicBox.Image.RawFormat)
Dim CPic() As Byte = ms.GetBuffer
ms.Close()
Dim MyConnection As AccessData.DataBaseConnection = New AccessData.DataBaseConnection
Dim myCommand As SqlCommand = New SqlCommand("Insert Into TbPic (ID,Pic) values (@ID,@Pic)", MyConnection.open)
myCommand.CommandType = CommandType.Text
Dim parameterID As SqlParameter = New SqlParameter("@ID", SqlDbType.VarChar)
parameterID.Value = "1"
Dim parameterPic As SqlParameter = New SqlParameter("@Pic", SqlDbType.Image)
parameterPic.Value = CPic
With myCommand.Parameters
.Add(parameterID)
.Add(parameterPic)
End With
Dim result As SqlDataReader = myCommand.ExecuteReader(CommandBehavior.CloseConnection)
Catch ex As Exception
MsgBox(ex.Message)
Finally
MyConnection.close()
End Try
Lalu bagaimana caranya untuk menampilkan kembali tersebut ke dalam picture box. Berikut sintaks nya
Try
Dim arr() As Byte
objCommand = MyConnection.open.CreateCommand
objCommand.CommandText = ("select Pic from TbPic;")
objdatareader = objCommand.ExecuteReader
objdatareader.Read()
arr = objdatareader.Item("Pic")
PicBox.Image = Image.FromStream(New IO.MemoryStream(arr))
Catch ex As Exception
MsgBox(ex.Message)
Finally
MyConnection.close()
End Try
Mudah-mudahan artikel ini dapat membantu rekan-rekan yang request maupun tidak tentang artikel ini..
Wassalam
81 comments:
Makasih uda mau bagi ilmunya moga2 mendapat balasan atas kebaikannya, oh ya mas ada ga cara untuk memperkecil ukuran Log file database SQL server?
Satu lagi gimana cara untuk mengecek keberadaan suatu gambar dalam database, gini teorinya sitaxnya: melakukan pengecekan terhadap primeri key ID jika ada maka melakukan pengecekan lagi terhadap tabel Pic, jika terdapat gambar maka tampilkan di picturbox tapi jika tidak ada maka picturbox.image = nothing
untuk memperkecil log liat di link berikut http://www.broad-lea.com/sql_server/sql_reduce_log_size.html
coba seperti ini
If arr.Length <> Nothing Then
PicBox.Image = Image.FromStream(New IO.MemoryStream(arr))
Else
PicBox.Image = Nothing
End If
atau length di ganti 0 or -1..
Thanks atas infonya mas junindar
sy pemula yang belajar vb.mkash bngt atas codenya,tolong donk yang pke sintak sqlnya dan tabel sql buat gambar peke tipe data apanya?
Thanks atas input nya...tapi untuk tipe datanya apa bisa dilihat dari sintaks nya kok..tapi kedepan akan saya usahakan gunain gambar biar lebih jelas lagi.. :)
saya yola nak smk kls 2
saya mo minta ide nih om saya salah satu pembeli buku om
membuat aplikasi penjualan itu
minta ide buat program yg simpel tp ada harga jual nya
bis nya klw nggak da harga jual
saya nggak naik kls om..........
coba buat program reminder ....
kamu bisa liat code nya di blog ini...simple dan banyak fungsi nya..
tolong tampilin ong reminer nya
sayaa nggak tw om......
http://junindar.blogspot.com/2008/11/reminder-program-dengan-vbnet.html
ini link nya download..dan install di PC kamu ..
buka help nya...disitu ada full source code nya
Mas saya Mhasiswa Negeri, mau nanya, untuk coding di PixBox, itu harus ada deklarasi dulu ga.. saya copy ko benyak yang error tlong penjelasannya+ nama2 toolboxnya
terimakasih
waduh, ga ngerti saya pertnyaannya..
Maksudnya pada kasus apa??
Maksudnya untuk komponen2 pada toolbox ya??wahh bisa jadi buku tebal kalau saya jelasin satu..saran liat namanya search di MSDN atau google untuk sample penggunaan nya...
aloooo ka junindar..
kenalkan saya ferry...
ka, mau tnya neh...
pny program ttg sistem pakar ga???
pk vb.net 2005 n database sql server...
aku ada tgs neh...ada yg ga aku ngerti...
yg ga aku ngerti tuh caranya buat hubungan 1 pertanyaan ke pertanyaan yg laen...gt...
thanks b4 ka...
wahhhh..jarang sekali saya dengar sistem pakar pake vb.net...kan ada software khusus nya..untuk kita isi basis pengetahuan nya..
mkasih dh bgi2 ilmu tolong donk yang pke vb 2005nya
di sini saya menggunakan vb 2003 dan 2008..tapi untuk code ga jauh beda kok..jadi ga ada masalah
Mem mas,
aku mo nanya,
itu yang OFD itu pa ya?
cos eror pad bgaian itu,
eroor disebabkan karena lum dideklarasi,
nah nama untuk mendeklarasina ap ya?
tks in advance.
Badewei,Blog na bagus bgt mas,
semuana ttg vb jadina ga pusing2 nyari referensi lagi deh:)
OFD = Open File Dialog.
Caranya Drag Pada ToolBox komponen ini (OPen file dialog).
dan ubah Properties Name menjadi OFD.
pasti OK..
malam mas junindar,
saya udah bisa save gambar kedalam DB tetapi ada masalah ketika ingin menampilkan gambar yang telah disimpan,,
Apabila saya memasukkan 4 gambar, maka ketika melakukan 'View' yang muncul yang hanya gambar yang pertma saja(inginnya gambar yang ketiga)
apa dikarenakan ditulis seperti ini:
Dim parameterID As SqlParameter = New SqlParameter("@nama", SqlDbType.VarChar)
parameterID.Value = "1 ",
ap ad solusinya mas junindar,
mohon pencerahannya.
Tks
kalau gitu ubah aja criteria pencarian nya untuk gambar ke tiga..
di buat custom mas..jangan ubah dari code..misal buat pake textbox, trus criteria nya refer ke textbox..
Mas mau nanya nih.. Dalam form baru saya tambahkan ADODC dan datagrid, lalu sy tekan F5 dan datanya sudah tampil dalam datagrid, NIM dan NAMA berikut isinya. Pertanyaannya :
1. Bila saya ingin menambahkan command button untuk merubah huruf kecil yg ada dalam kolom NAMA dalam datagrid menjadi huruf besar, gimana caranya? Terima kasih sebelumnya....
ini di Vb brapa mas?? 6 ya??
iya mas VB 6, jadi dalam kolom NAMA ada beberapa nama dan sy mau pake command button untuk merubah semua nama dalam kolom NAMA menjadi huruf besar semua, saya baru bisa merubah bila di klik terlebih dahulu salah satu nama dan klik button, jadi satu satu. sy pengen semuanya sekaligus bisa gak ya mas tanpa harus di klik namanya satu satu?
Saya VB 6 udah lama ga pake...
tapi kalau mau buat Upper dari SQL nya aja..kalau di SQL server seperti ini SELECT { fn UCASE(Description) } AS DESCRIP
FROM T_Material.
Siiiip...thanks yach mas...!!!
mas, sy mau ty knp saya coba codingnya ada error bagian ini terutama As AccessData.DatabaseConnection
Dim MyConnection As AccessData.DataBaseConnection = New AccessData.DataBaseConnection
dimana letak connection stringnya yach, btw database yang digunakan pake apa? truz tipe data masing2 field apa yach?
Tq
my email : budiyanto_chen@ymail.com
coba kamu cek artikel saya yang ke 13..untuk sample ini saya menggunakan SQL server 2000..
untuk field type bisa di lihat di coding..untuk field pertama saya menggunakan Varchar, untuk field penyimpanan gambar saya menggunakan "image"..
mas bs tahap lebih jelas lg g,mf soalnya masih pemula jd masih bingung.makasih
kirim email ke saya aja.. junindar@gmail.com
kirim project yang kamu buat
terima kasih banyak pak atas pertanyaan saya yang telah dijawab, sangat membantu sekali, matursuwun..
Mas, saya mau tanya ttg picturebox, ketika berhasil diload dari database dan tdk terjadi perubahan di picturebox lalu disimpan lagi muncul pesan "A generic error occurred in GDI+" itu kenapa yah ?
Bisa kasih sintaks kamu ??
assalamualaikum mas junindar...
mau nanya nih, aku ada master product, ditabelnya aku tambahin field gambar tipenya image disetnya sih allow null, trus di formnya ada picture boxnya, yang aku mau tanyain gimana cara validasi pada saat save data ke dalam database supaya tidak error apabila gambarnya tidak dimasukkan, karna field image di tabel productnya aku set "allow null"... makasih mas atas bimbingannya
Mas "Allow Null" nya "Yes" atau "No" ?? kalau yes, ga ada masalah donk kalau ga di masukkan gambar nya..tapi kalau no, baru bermasalah.. tapi kok gambar ga boleh kosong? bisa di jelaskan
aku setnya "yes" untuk allow nullnya, maksud aku gini mas aku udah ada script insert data untuk ke databasennya, cuma aku kombinasikan antara coding aku sama dari contoh punya mas ini jadinya gini nih mas...
query = "insert into MstItem(Kd_Item, Nm_Item, Hrgsat, Satuan, Kd_Jenis_Item, Gambar) values ('" & (txtKdItem.Text) & "','" & (txtNmItem.Text) & "','" & Val(txtHarsat.Text) & "','" & (txtSatuan.Text) & "','" & (cboKdJenisItem.Text) & "',@Pic)"
nah kan untuk value gambarnya menggunakan parameter (@pic), nah validasi pada saat apabila gambar tsb tidak dimasukkan gimana caranya? karna aku udah coba begini hasilnya msh error ...
if picturebox.image = Nothing Then
messagebox.show("")
end if
artikel ke 13 yg mn y ?
makasih sblmny
klo bs bls skrg y, soalny hari ini mo d kmpul tgs sy, makasih
Terima kasih atas artikelnya.
Mas saya ingin tanya : bagaimana codingnya bila tipe datanya diganti dgn varbinary? dan bukan image.
banyak artikel dari internet memakai binary reader yg memaksa adanya path file image, padahal saya ingin mengambil image langsung dari picturebox.image tidak pake path file image tsb.
Saya berharap mas mau membantu.
terima kasih
banyak alasan kenapa menggunakan path untuk menyimpan gambar..
kalau langsung menyimpan kedalam tabel akan membebani jika data nya dalam jumlah yang banyak..
kalau tidak mau menggunakan path, ya ikuti saja artikel saya ini..
TERIMA KASIH ATAS BALASANNYA.
Mas, maksud saya spt ini:
Saya ingin menyimpan image di SQL server bukan dengan tipe data image tetapi dengan tipe varbinary karena kalau tdk salah Microsoft tidak akan memakai tipe image pada SQL Server versi yg akan datang.
Mungkin mas ada sedikit code untuk menyimpan di tipe varbinary krn mungkin ada perbedaan dgn tipe image.
Terima Kasih.Sukses selalu.
mas junindar...saya ingin membuat aplikasi yang bisa upload gambar pada tiap barang di database,saat code dari mas junindar saya copy terdapat error2 berupa Error 1Type 'AccessData.DataBaseConnection' is not defined.
bisa tidak kirimkan versi lengkapnya ke email saya di zynesys@yahoo.com
maaf,saya masih pemula sekali...mohon bantuannya,terimakasih...
Sebelumnya buat dulu Class DatabaseConnection...
liat artikel sy step 13
makasih banyak ya mas, bantu2 saya neh buat belajar :D
kalau DB nya menggunakan Ms. Access apa yang harus dirubah ?
makasih sebelumnya
Access 2003, tipe datanya OLE Object..
ini sintaks nya ..
Private Function SaveImage() As OleDbDataReader
Dim arr() As Byte
FileOpen(1, txtFileName.Text, OpenMode.Binary, OpenAccess.Read, OpenShare.Shared)
ReDim arr(FileLen(txtFileName.Text) - 1)
FileGet(1, arr)
FileClose(1)
Dim conn As OleDbConnection = New OleDbConnection(strConn)
Dim myCommand As OleDbCommand = New OleDbCommand("Insert Into Table1 (img) values (@Pic)", conn)
conn.Open()
myCommand.CommandType = CommandType.Text
Dim parameterPic As OleDbParameter = New OleDbParameter("@pic", OleDbType.LongVarBinary)
parameterPic.Value = arr
With myCommand.Parameters
.Add(parameterPic)
End With
Dim result As OleDbDataReader = myCommand.ExecuteReader(CommandBehavior.CloseConnection)
End Function
terima kasih sangat membantu mas..
mas minta tolong pencerahannya karena saya pakai database mysql..
trims sebelumnya
pak , bagaimana cara upload file pdf, word, dan bagaimana agar bisa di tampilkan saat di klik, terimakasih.
Simpan path dan nama filename kedalam table..trus untuk membuka file tersebut, gunakan sintaks dibawah..
System.Diagnostics.Process.Start(path & Filename)
tau ndak gimana carax mbatasi file gambar hanya 20 kb aja d vb.net?
Bisa di protek pada saat user load gambar seperti berikut contoh nya.. (contoh ini untuk gbr berukuran 512 KB)
Try
OFD.Filter = "Image Files (*.JPEG, *.jpg, *.bmp, *.gif, *.png)|*.JPEG; *.jpg; *.bmp; *.gif; *.png"
If OFD.ShowDialog = Windows.Forms.DialogResult.OK Then
txtPath.Text = OFD.FileName
txtPath.SelectionStart = txtPath.Text.Length
If Trim(txtPath.Text) <> "" Then
Dim MyFile As New FileInfo(txtPath.Text)
Dim FileSize As Long = MyFile.Length / 1024
If FileSize > 512 Then
MsgBox("Maksimum gambar 512 KB", MsgBoxStyle.Exclamation, "tes")
PbImage.Image = Nothing
txtPath.Text = ""
Exit Sub
End If
PbImage.Image = Image.FromFile(txtPath.Text)
End If
End If
Catch ex As Exception
MsgBox(ex.Message)
End Try
saya nelson pak, setelah melihat program penyimpanan gambar diatas saya penasaran untuk mencobanya. tapi sayangnya tidak bisa pak, saya biasanya pake acces pak pake sql jarang dan kurang mengerti. klw boleh, bisa minta tolong projectnya pak? kirim ke email saya ya pak?
Nelson_munthe@yahoo.co.id
thanks before ya pak
bos mau tanya
saya sedang membuat aplikasi sistem pakar pake vb 2010+acces Coding untuk ke pertanyaan atau solusi selanjutnya gimana ya. Di form itu ada 2 button ya dan tidak. Di databasenya udah dbuat jika ya ke mana ,jika tidak kemana berdasakan id pertanyaan dan id solusi. Codingnya gmana ya mohon bantuannya?
Oh iya sya lihat komennya ktanya ada software khusus untuk sistem pakar sofwarenya apa ya?
Thx be4
Sistem pakar, pakai Visual Prolog kalau ga salah.. :) :)
mas, mo numpang nanya,,kan dibuku mas yg vb 2010 + access 2010 kan koneksi ke databasenya dari My.setting.....
dan ga pakai password,,nah pertanyaan saya kalo mau databasenya pakai password gimana ya??
coba kesini http://connectionstrings.com/access-2007
Thank's mas,,,,:)
Bagus Postingnya gan, selama ini saya silent reader aja...
Ijin Observasi cara Save & Load Image disini gan...
terimakasih bnyak atas artikelnya...
Bagaimana caranya supaya data file gambar di tampung sementara di listview kemudian di simpan ke database krn listview ini berfungsi sebagai penampung sementara kemudian di insert ke database semua data yang ada di listview
makasih infox dan jawabanx
gambar yg disimpan berupa apa??
Gambar yang di simpan bisa berbentuk Jpeg/jpge dan BMP Bang
Makasih atas Refley nya
maksudnya image nya disimpan di database, atau hanya path nya saja
Yang Saya simpan ke database adalah gambarnya, bukan pathnya karena untuk kemamanan dan kemudahan dalam mengembalikan jika terjadi sesuatu. dan listview untuk record sementara seblm menyimpan ke database serta dlm sekali simpan gambar bisa lebih dari satu di dalam listview tsb.
Saya tdk memerlukan untuk menampilkan gambarnya dlm listview tapi "memory Stream" gambar dapat di simpan ke database dan gambar bisa di tampilkan melalui laporan spt di Active report / Cristal Report. Makasih udah menanggapinya :)
Malam Mas Jun, Aku ada sedikit masalah syntax penyimpanan gambar sbb:
Private Sub Simpan_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Simpan.Click
If cmbNmStyle.Text = "" Then Exit Sub
If cmbKdModel.Text = "" Then Exit Sub
If cmbWarna.Text = "" Then Exit Sub
If cmbSize.Text = "" Then Exit Sub
If cmbKdFac.Text = "" Then Exit Sub
Try
Call Koneksi()
Dim ms1 As New MemoryStream
ImgFoto1.Image.Save(ms1, ImgFoto1.Image.RawFormat)
Dim arrayImage1() As Byte = ms1.GetBuffer
ms1.Close()
Dim SQL As String
SQL = "Insert into tbl_kodeprod values('" & txtKdProd.Text & "','" & cmbNoCut.Text & "','" & cmbNoPO.Text & "','" & cmbNmStyle.Text & "','" & cmbKdModel.Text & "','" & cmbWarna.Text & "','" & cmbSize.Text & "','" & txtQtyOrder.Text & "','" & txtQtyProd.Text & "','" & cmbKdFac.Text & "','" & txtTargetProd.Text & "','" & dtTglProd.Text & "','" & dtTglExport.Text & "','" & txtKeterangan.Text & "',?)"
Dim DMLSQL As New System.Data.OleDb.OleDbCommand(SQL, Database)
DMLSQL.Parameters.Add("@Foto1", SqlDbType.Image).Value = arrayImage1
DMLSQL.ExecuteNonQuery()
Call Kosong()
Catch ex As Exception
MsgBox(ex.ToString())
End Try
End Sub
syntax tsb sudah berjalan untuk proses simpan ke database, yg ingin aku tanyakan bgm caranya agar apabila gambar kosong proses simapn tetap berjalan dengan asumsi gambar kosong. mohon petunjuknya. terima kasih.
Maaf tambahan mas Jun,
Dari syntax diatas, bagaimana caranya simpan gambar lebih dari satu gambar?
@Deddy : untuk gampangnya buat default picture untuk gambar kosong
mas mo tanya klo tampilin data dari tabel header ma detail dalam satu form gimana yach...trims
tinggal bermain di query aja mas..
btw, mau nampilin nya dimana??
bisa di jelaskan
saya ingin menapilkan pada form pelatihan, lebih jelasnya saya kirim ke email mas junidar..terimakasih
Sebelumnya saya berterima kasih kepada Pak Junindar. Blog ini sangat bermanfaat untuk saya dalam mempelajari Matakuliah. Kebetulan saya Mahasiswa UIB Semester 2 Jurusan Sistem Informasi.
Moga Pak Junindar sehat dan sukses selalu.. Keep Sharing. :)
ini yang orang banyak cari.... thanks ya
klo cara menampilkan foto di cristalreport gimana ya mas?
mas junindar.. saya mau tanya.. saya membuat aplikasi dimana ada fotonya, dan saya menggunakan path, sejauh ini berhasil di save ke database, yang jadi pertanyaannya bagaimana cara memanggilnya dari database jika karakter gambar di database berfomat "varchar(max)" yang isinya contoh "c:\gambar" tolonga yang mas dah stack overflow ni... :D
misi,, saya mau tanya klo cara menampilkan soal word dari komputer ke vb.netnya gmnaa yaa,? trus setelah itu di klik tombol start maka muncul soal di aplikasinya,, tolongin mass,, makasih,,,
misi,, saya mau tanya klo cara menampilkan soal word dari komputer ke vb.netnya gmnaa yaa,? trus setelah itu di klik tombol start maka muncul soal di aplikasinya,, tolongin mass,, makasih,,,
misi,, saya mau tanya klo cara menampilkan soal word dari komputer ke vb.netnya gmnaa yaa,? trus setelah itu di klik tombol start maka muncul soal di aplikasinya,, tolongin mass,, makasih,,,
mas ,aku connect vb 6 ke sql
terus aku bikin button update,jadi saat aku clik data yg ada di dtbase muncul, semua data nya sih muncul.
tapi image yg udah aku load itu ga ke show, tapi di database nya filename image nya ada kok,cuma gak bisa muncul aja itu gmna yah thanks
mas ,aku connect vb 6 ke sql
terus aku bikin button update,jadi saat aku clik data yg ada di dtbase muncul, semua data nya sih muncul.
tapi image yg udah aku load itu ga ke show, tapi di database nya filename image nya ada kok,cuma gak bisa muncul aja itu gmna yah thanks
makasi banyak gan,,,
mantap gan....
sukses trus
bagaimana kalau dari datagrid ke image?mohon pencerahannya
mau nanya bg gimana cara mengatur datagrid supaya menampilkan gambar dari database sql/access ??? kalau bisa coding vbnya kash tau bg. Mohon bntuannya bg buat tgas sidang
@Rolan : bisa liat disini http://junindar.blogspot.co.id/2009/01/menampilkan-gambar-pada-datagridview.html
Bang mau nanya bang...
Aku kan mau masukin tuh file gambar pada dgv nya tapi di datagritnya ga tambil bang...cuma ada tanda silang...kalo di klik gambar nya muncul pesan "the following exception occurred in the datagridview:".
Nah itu kenapa ya bang...mohon bantuannya bang
Post a Comment