Anda di halaman 1dari 16

Kuliah Berseri IlmuKomputer.

Com
Copyright © 2003 IlmuKomputer.Com

STEP BY STEP MENJADI


PROGRAMMER HANDAL
DENGAN VB.NET

Lisensi Dokumen:
Copyright © 2003 IlmuKomputer.Com
Seluruh dokumen di IlmuKomputer.Com dapat digunakan, dimodifikasi dan
disebarkan secara bebas untuk tujuan bukan komersial (nonprofit), dengan syarat
tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang
disertakan dalam setiap dokumen. Tidak diperbolehkan melakukan penulisan ulang,
kecuali mendapatkan ijin terlebih dahulu dari IlmuKomputer.Com.

Junindar, ST, MCPD, MOS, MCT, MVP VB.NET

FILESTREAM SQL SERVER 2008 R2


DAN VB 10
UNTUK MENYIMPAN GAMBAR PADA
DATABASE

FileStream adalah sebuah fitur baru pada SQL Server 2008 keatas untuk menyimpan
file “unstructured data” pada database. Berikut merupakan contoh beberapa data
untuk “unstructured data”.
- Character Large Objects (CLOB) : Email Body
- Binary Large Objects (BLOB): Dokumen file (word dan excel), file gambar,
multimedia file (music dan video).

Step By Step Menjadi Programmer Handal Dengan VB.Net


Junindar, ST, MCPD, MOS, MCT, MVP VB.NET
Kuliah Berseri IlmuKomputer.Com
Copyright © 2003 IlmuKomputer.Com

Sesuai dengan judul, pada artikel ini hanya akan membahas bagaimana menyimpan
file gambar dengan menggunakan FileStream. Sebelum SQL Server 2008 (SQL
Server 2005) untuk menyimpan CLOB data kita akan menggunakan tipe data TEXT
(atau NTEXT untuk unicode). Sedangkan BLOB kita menggunakan tipe data BLOB.
Semua tipe data diatas masih tersedia pada SQL Server 2008, tetapi kita dapat
menggunakan tipe-tipe data yang baru seperti VARCHAR (MAX) untuk TEXT,
NVARCHAR (MAX) untuk NTEXT dan VARBINARY (MAX) untuk BLOB.
Sebelum menggunakan FileStream, untuk menyimpan gambar pada suatu aplikasi
yang kita buat, biasanya kita akan menyimpan file gambar tersebut kedalam table
(menggunakan BLOB) atau menyimpan file gambar tersebut kedalam folder atau
tempat yang telah kita sediakan terlebih dahulu, sehingga pada table hanya kita isi
kan nama file atau alamat dimana file itu disimpan. Ada beberapa poin yang harus di
ketahui dalam menggunakan FileStream.
- Binary data disimpan sebagai data file di luar database
- File tersebut data di akses melalui WIN32 API
- Dapat menyimpan file dengan size lebih besar dari 2 GB (VARBINARY (MAX))
- Dapat menggunakan Transact SQL
Untuk lebih jelasnya, kita akan mencoba membuat sebuah aplikasi penyimpanan
gambar dengan menggunakan VB 10 sebagai bahasa pemograman nya.
Ikuti langkah-langkah berikut ini.
Pastikan sudah terinstall SQL Server 2008 atau yang terbaru pada PC/Laptop.
 Mengaktifkan FileStream
Sebelum menggunakan fitur ini, terlebih dahulu kita harus mengaktifkan
FileStream setting pada SQL Server, dengan cara sebagai berikut.
- Start > All Program > Microsoft SQL 2008 R2 > Configuration Tools > SQL
Server Configuration Manager

Step By Step Menjadi Programmer Handal Dengan VB.Net


Junindar, ST, MCPD, MOS, MCT, MVP VB.NET
Kuliah Berseri IlmuKomputer.Com
Copyright © 2003 IlmuKomputer.Com

- Selanjutnya klik kanan pada SQL Server Services > Open

- Selanjutnya pada panel sebelah kanan, klik kanan pada SQL Server yang akan
di aktifkan FileStream. Lalu klik Properties

Step By Step Menjadi Programmer Handal Dengan VB.Net


Junindar, ST, MCPD, MOS, MCT, MVP VB.NET
Kuliah Berseri IlmuKomputer.Com
Copyright © 2003 IlmuKomputer.Com

- Maka jendela dialog seperti dibawah tampil, selanjutnya aktikan semua


checkbox yang ada, dan ketikkan nama windows share yang di inginkan pada
textbox. Dan klik OK.

- Selanjutnya buka SQL Server Mangement Studio, lalu klik New Query untuk
menampilkan query editor.

Step By Step Menjadi Programmer Handal Dengan VB.Net


Junindar, ST, MCPD, MOS, MCT, MVP VB.NET
Kuliah Berseri IlmuKomputer.Com
Copyright © 2003 IlmuKomputer.Com

- Ketikkan command seperti dibawah, dan tekan button Execute untuk


mengeksekusi command tersebut.

- Buat sebuah database dengan nama Latihan.


- Sebelum kita membuat table untuk menyimpan data, hal yang perlu kita
lakukan untuk menggunakan FileStream adalah memasukkan database
kedalam FileGroup.
- Pada SQL Server Management Studio, klik New Query, ketikkan command
berikut dan klik button execute.

ALTER DATABASE Latihan ADD FILEGROUP FileStreamGroup1


CONTAINS FILESTREAM;
GO

- Langkah selanjutnya adalah dengan memasukkan file (path) kedalam


filegroup.

ALTER DATABASE Latihan ADD FILE (


NAME = FSGroup1File, FILENAME =
'C:\FileStreamPhoto')
TO FILEGROUP FileStreamGroup1;
GO

‘C: \FileStreamPhoto’ merupakan nama path dimana kita akan menyimpan


individual file. Setelah mengeksekusi command diatas, pada folder
“FileStreamPhoto” secara otomatis akan terdapat file dan folder seperti
berikut $FSLOG folder dan filestream.hdr. Hal yang perlu di ketahui
mengenai root directory untuk FileStream adalah setiap table yang
menggunakan FileStream akan memiliki sebuah folder. Dan didalam folder
Step By Step Menjadi Programmer Handal Dengan VB.Net
Junindar, ST, MCPD, MOS, MCT, MVP VB.NET
Kuliah Berseri IlmuKomputer.Com
Copyright © 2003 IlmuKomputer.Com

tersebut akan terdapat folder sesuai dengan banyak nya kolom yang
menggunakan FileStream. Sebagai contoh Table A dan B menggunakan
FileStream. Dan Table A memiliki 1 kolom dan Table B 2 kolom yang
menggunakan FileStream. Maka didalam folder table A akan terdapat 1 folder
sedangkan folder table B akan terdapat 2 folder.
- Selanjutnya adalah membuat sebuah table yang menggunakan FileStream
sebagai berikut.

CREATE TABLE tblImage (


PicId UNIQUEIDENTIFIER ROWGUIDCOL NOT NULL UNIQUE,
PicName VARCHAR (25),
Picture VARBINARY(MAX) FILESTREAM);
GO

- Sampai dengan tahap ini, kita sudah memiliki sebuah table pada database
yang kita buat diatas.

 Membuat aplikasi penyimpanan gambar dengan VB


- Buat sebuah project dengan nama “FileStream”.
- Selanjutnya tambahkan beberapa kontrol berikut kedalam form.
a. 3 buah button dengan properties Name dan Text masing-masing seperti
berikut.
1. Name = btnSave, Text = Save
2. Name = btnDelete, Text = Delete
3. Name = btnBrowse, Text = …

Step By Step Menjadi Programmer Handal Dengan VB.Net


Junindar, ST, MCPD, MOS, MCT, MVP VB.NET
Kuliah Berseri IlmuKomputer.Com
Copyright © 2003 IlmuKomputer.Com

b. 1 Buah TextBox dengan Name = txtFileName


c. 1 buah OpenFileDialog, ganti properties Name menjadi OFD
d. PictureBox, ganti properties Name, BorderStyle dan SizeMode menjadi
masing pbImage, FixedSingle dan StretchImage.
e. 1 buah DataGridView
f. 1 buah label dengan Text = File Name.
- Susun control-kontrol tersebut seperti pada gambar dibawah.

- Pada aplikasi ini kita akan menggunakan LINQ to SQL untuk proses CRUD
pada database.
- Selanjutnya Add New Item pada project lalu pilih LINQ to SQL Classes
selanjutnya ganti Name pada textbox menjadi “dcFileStream.dbml”.

Step By Step Menjadi Programmer Handal Dengan VB.Net


Junindar, ST, MCPD, MOS, MCT, MVP VB.NET
Kuliah Berseri IlmuKomputer.Com
Copyright © 2003 IlmuKomputer.Com

- Buka jendela Database Explorer (Ctrl+Alt+S), lalu klik kanan pada “Data
Connection” lalu pilih “Add Connection”.
- Pilih Server Name dan database (Latihan) yang telah kita buat sebelum nya.
Klik “Test Connection” untuk mengecek koneksi, jika berhasil klik button
OK.

Step By Step Menjadi Programmer Handal Dengan VB.Net


Junindar, ST, MCPD, MOS, MCT, MVP VB.NET
Kuliah Berseri IlmuKomputer.Com
Copyright © 2003 IlmuKomputer.Com

- Lalu Drag table “tblImage” kedalam jendela “Object Relational Designer”.

- View Code pada Form 1, dan ketikkan Imports System.IO pada awal baris.
- Kita akan membuat sebuah procedure untuk merfresh form seperti dibawah.

Private Sub ClearForm()


txtFileName.Clear()
pbImage.Image = Nothing
End Sub

- Selanjutnya sebuah procedure untuk menampilkan data pada DataGridView,


ketikkan sintaks seperti dibawah.

Private Sub Displaydata()


Using db As New dcFileStreamDataContext
Dim hasil = (From img In db.tblImages Order By img.PicName Ascending)
DataGridView1.DataSource = hasil
End Using
End Sub

Sintaks diatas merupakan fungsi LINQ to SQL untuk menampilkan data.


- Klik ganda button browse (…) dan ketikkan sintaks berikut.

Try
OFD.Filter = "Image Files (*.JPEG, *.jpg, *.bmp, *.gif,
*.png)|*.JPEG; *.jpg; *.bmp; *.gif; *.png"
If OFD.ShowDialog = Windows.Forms.DialogResult.OK Then
Dim strFileLocation As String = OFD.FileName
txtFileName.Text = OFD.SafeFileName
pbImage.Image = Image.FromFile(strFileLocation)
End If
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Exclamation, "FileStream")
End Try

Step By Step Menjadi Programmer Handal Dengan VB.Net


Junindar, ST, MCPD, MOS, MCT, MVP VB.NET
Kuliah Berseri IlmuKomputer.Com
Copyright © 2003 IlmuKomputer.Com

Sesuai dengan nama nya, button browse ini berfungsi untuk mencari gambar
dan menampilkan gambar tersebut kedalam sebuah PictureBox. Coba
jalankan program dan klik button browse lalu cari gambar yang di inginkan.

- Selanjutnya adalah membuat procedure untuk menyimpan gambar, tetapi


sebelum membuat procedure tersebut kita akan membuat sebuah function
seperti dibawah.

Private Function GetImageBinary() As Data.Linq.Binary


Dim ms As New MemoryStream()
pbImage.Image.Save(ms, pbImage.Image.RawFormat)
Dim cPic() As Byte = ms.GetBuffer
ms.Close()
Return New Data.Linq.Binary(cPic)
End Function

Function diatas digunakan untuk mendapatkan Binary dari gambar yang kita
pilih sebelum nya. Yang nantinya akan digunakan pada procedure
penyimpanan data, seperti sintaks dibawah.

Step By Step Menjadi Programmer Handal Dengan VB.Net


Junindar, ST, MCPD, MOS, MCT, MVP VB.NET
Kuliah Berseri IlmuKomputer.Com
Copyright © 2003 IlmuKomputer.Com

Private Sub SaveImage()


Using db As New dcFileStreamDataContext
Dim images As New tblImage With {.PicId = Guid.NewGuid(),
.PicName = txtFileName.Text,
.Picture = GetImageBinary()}
db.tblImages.InsertOnSubmit(images)
db.SubmitChanges()
End Using
End Sub

Seperti kita lihat pada sintaks diatas, pada Property Picture menggunakan
function “GetImageBinary” untuk mendapatkan valuenya.
- Selanjutnya klik ganda button Save dan ketikkan sintaks seperti dibawah.

Try
If pbImage.Image Is Nothing Then
Throw New Exception("Masukkan gambar yang akan disimpan")
End If
SaveImage()
Displaydata()
ClearForm()
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Exclamation, "FileStream")
End Try

Sebelumnya system akan mengecek apakah sudah ada gambar pada


PictureBox, jika tidak ada maka akan keluar sebuah pesan untuk
memasukkan gambar terlebih dahulu. Lalu akan menyimpan gambar
kedalam database. Selanjutnya aplikasi akan menampilkan data yang telah
disimpan kedalam DataGridView dan merefresh form. Jalankan program
dan coba untuk meyimpan gambar dengan menggunakan button save.

Step By Step Menjadi Programmer Handal Dengan VB.Net


Junindar, ST, MCPD, MOS, MCT, MVP VB.NET
Kuliah Berseri IlmuKomputer.Com
Copyright © 2003 IlmuKomputer.Com

- Setelah berhasil dengan proses simpan, selanjutnya adalah membuat proses


penghapusan data. Klik ganda button delete, dan ketikkan sintaks dibawah
ini.

Try
'mengambil value dari kolom PicId (GUID) untuk baris yang di klik
Dim picId As Guid = DirectCast(DataGridView1.CurrentRow.Cells(0).Value, Guid)
Using db As New dcFileStreamDataContext
Dim hasil = (From c In db.GetTable(Of tblImage)() _
Where c.PicId.Equals(picId) Select c).ToList
If hasil.Count = 0 Then
Throw New Exception("Data tidak ada")
End If
db.tblImages.DeleteOnSubmit(hasil.First)
db.SubmitChanges()
End Using

pbImage.Image = Nothing
Displaydata()
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Exclamation, "FileStream")
End Try

Untuk melakukan proses delete ini, kita memerlukan sebuah value dari
kolom PicId. Oleh karena itu sebelum menekan button delete pastikan klik
(pilih) terlebih dahulu baris yang akan di hapus pada DataGridView.

Step By Step Menjadi Programmer Handal Dengan VB.Net


Junindar, ST, MCPD, MOS, MCT, MVP VB.NET
Kuliah Berseri IlmuKomputer.Com
Copyright © 2003 IlmuKomputer.Com

- Sampai tahap ini, kita telah berhasil membuat proses simpan dan hapus data
pada form. Langkah selanjutnya adalah, menampilkan data pada saat baris
di DataGridView di pilih (klik).
- Klik DataGridView, lalu pada Properties klik button events, dan klik ganda
CellClick

Dan ketikkan sintaks dibawah ini.

Try
pbImage.Image = Nothing
If DataGridView1.Rows(e.RowIndex).Cells("Picture").Value <> Nothing Then
Dim imageBytes() As Byte =
(DataGridView1.Rows(e.RowIndex).Cells("Picture").Value).ToArray
Dim newImage As Image
Using ms As New MemoryStream(imageBytes, 0, imageBytes.Length)
ms.Write(imageBytes, 0, imageBytes.Length)
newImage = Image.FromStream(ms, True)
End Using
pbImage.Image = newImage
End If
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Exclamation, "FileStream")
End Try

Program akan menampilkan gambar pada PictureBox pada saat baris


DataGridView di klik.

Step By Step Menjadi Programmer Handal Dengan VB.Net


Junindar, ST, MCPD, MOS, MCT, MVP VB.NET
Kuliah Berseri IlmuKomputer.Com
Copyright © 2003 IlmuKomputer.Com

- Dan pada event Form_Load ketikkan sintaks berikut.

Try
Displaydata()
DataGridView1.ShowCellToolTips = False
DataGridView1.Columns("Picture").Visible = False
DataGridView1.Columns("PicId").Visible = False
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Exclamation, "FileStream")
End Try

Pada sintaks ini di gunakan pada saat program pertama kali tampil, program
akan menampilkan data pada DataGridView dan menyembunyikan kolom
Picture dan PicID.

Sampai tahap ini kita telah selesai membuat sebuah aplikasi penyimpanan
gambar pada database dengan memanfaatkan fungsi FileStream pada SQL
Server 2008 R2. Dengan adanya fungsi ini akan menambah pilihan kita jika
menghadapi kasus seperti penyimpanan unstructured data.
Semoga artikel ini dapat menambah wawasan kita semua khusus nya penulis
sendiri.

Wassalam.
☺☺☺

Step By Step Menjadi Programmer Handal Dengan VB.Net


Junindar, ST, MCPD, MOS, MCT, MVP VB.NET
Kuliah Berseri IlmuKomputer.Com
Copyright © 2003 IlmuKomputer.Com

Biografi Penulis.

Junindar Lahir di Tanjung Pinang, 21 Juni 1982. Menyelesaikan


Program S1 pada jurusan Teknik Informatika di Sekolah Tinggi
Sains dan Teknologi Indonesia (ST-INTEN-Bandung). Junindar
mendapatkan Award Microsoft MVP VB pertanggal 1 oktober
2009 hingga saat ini. Senang mengutak-atik computer yang
berkaitan dengan bahasa pemrograman. Keahlian, sedikit mengerti
beberapa bahasa pemrograman seperti : VB.Net, C#, SharePoint,
ASP.NET, VBA. Reporting: Crystal Report dan Report Builder.
Database: MS Access, MY SQL dan SQL Server. Simulation /
Modeling Packages: Visio Enterprise, Rational Rose dan Power
Designer. Dan senang bermain gitar, karena untuk bisa menjadi
pemain gitar dan seorang programmer sama-sama membutuhkan
seni. Pada saat ini bekerja di salah satu Perusahaan Consulting dan
Project Management di Malaysia sebagai Senior Consultant.
Memiliki beberapa sertifikasi dari Microsoft yaitu Microsoft
Certified Professional Developer (MCPD – SharePoint 2010), MOS
(Microsoft Office Specialist) dan MCT (Microsoft Certified
Trainer) Mempunyai moto hidup: “Jauh lebih baik menjadi
Orang Bodoh yang giat belajar, dari pada orang Pintar yang
tidak pernah mengimplementasikan ilmunya”.

Kritik dan saran kirim ke : junindar@gmail.com

Step By Step Menjadi Programmer Handal Dengan VB.Net


Junindar, ST, MCPD, MOS, MCT, MVP VB.NET
Kuliah Berseri IlmuKomputer.Com
Copyright © 2003 IlmuKomputer.Com

Referensi

1. www.msdn.microsoft.com
2. www.planetsourcecode.com
3. www.codeproject.com
4. www.aspnet.com
Masih banyak lagi referensi yang ada di Intenet. Anda tinggal cari di www.Google.com.
Dengan kata kunci “tutorial VB.Net”

Step By Step Menjadi Programmer Handal Dengan VB.Net


Junindar, ST, MCPD, MOS, MCT, MVP VB.NET

Anda mungkin juga menyukai