Jun FileStream dari vb.net

download Jun FileStream dari vb.net

of 16

description

Simpan gambar di sql server

Transcript of Jun FileStream dari vb.net

  • Kuliah Berseri IlmuKomputer.Com Copyright 2003 IlmuKomputer.Com

    Step By Step Menjadi Programmer Handal Dengan VB.Net Junindar, ST, MCPD, MOS, MCT, MVP VB.NET

    STEP BY STEP MENJADISTEP BY STEP MENJADISTEP BY STEP MENJADISTEP BY STEP MENJADI

    PROGRAMMER HANDALPROGRAMMER HANDALPROGRAMMER HANDALPROGRAMMER HANDAL

    DENGAN VB.NETDENGAN VB.NETDENGAN VB.NETDENGAN VB.NET

    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).

    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.

  • Kuliah Berseri IlmuKomputer.Com Copyright 2003 IlmuKomputer.Com

    Step By Step Menjadi Programmer Handal Dengan VB.Net Junindar, ST, MCPD, MOS, MCT, MVP VB.NET

    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

  • Kuliah Berseri IlmuKomputer.Com Copyright 2003 IlmuKomputer.Com

    Step By Step Menjadi Programmer Handal Dengan VB.Net Junindar, ST, MCPD, MOS, MCT, MVP VB.NET

    - 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

  • Kuliah Berseri IlmuKomputer.Com Copyright 2003 IlmuKomputer.Com

    Step By Step Menjadi Programmer Handal Dengan VB.Net Junindar, ST, MCPD, MOS, MCT, MVP VB.NET

    - 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.

  • Kuliah Berseri IlmuKomputer.Com Copyright 2003 IlmuKomputer.Com

    Step By Step Menjadi Programmer Handal Dengan VB.Net Junindar, ST, MCPD, MOS, MCT, MVP VB.NET

    - 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.

    - Langkah selanjutnya adalah dengan memasukkan file (path) kedalam filegroup.

    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

    ALTER DATABASE Latihan ADD FILEGROUP FileStreamGroup1 CONTAINS FILESTREAM; GO

    ALTER DATABASE Latihan ADD FILE ( NAME = FSGroup1File, FILENAME = 'C:\FileStreamPhoto') TO FILEGROUP FileStreamGroup1; GO

  • Kuliah Berseri IlmuKomputer.Com Copyright 2003 IlmuKomputer.Com

    Step By Step Menjadi Programmer Handal Dengan VB.Net Junindar, ST, MCPD, MOS, MCT, MVP VB.NET

    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.

    - 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 =

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

  • Kuliah Berseri IlmuKomputer.Com Copyright 2003 IlmuKomputer.Com

    Step By Step Menjadi Programmer Handal Dengan VB.Net Junindar, ST, MCPD, MOS, MCT, MVP VB.NET

    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.

  • Kuliah Berseri IlmuKomputer.Com Copyright 2003 IlmuKomputer.Com

    Step By Step Menjadi Programmer Handal Dengan VB.Net Junindar, ST, MCPD, MOS, MCT, MVP VB.NET

    - 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.

  • Kuliah Berseri IlmuKomputer.Com Copyright 2003 IlmuKomputer.Com

    Step By Step Menjadi Programmer Handal Dengan VB.Net Junindar, ST, MCPD, MOS, MCT, MVP VB.NET

    - 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.

    - Selanjutnya sebuah procedure untuk menampilkan data pada DataGridView, ketikkan sintaks seperti dibawah.

    Sintaks diatas merupakan fungsi LINQ to SQL untuk menampilkan data. - Klik ganda button browse () dan ketikkan sintaks berikut.

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

    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

    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

  • Kuliah Berseri IlmuKomputer.Com Copyright 2003 IlmuKomputer.Com

    Step By Step Menjadi Programmer Handal Dengan VB.Net Junindar, ST, MCPD, MOS, MCT, MVP VB.NET

    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.

    Function diatas digunakan untuk mendapatkan Binary dari gambar yang kita pilih sebelum nya. Yang nantinya akan digunakan pada procedure penyimpanan data, seperti sintaks 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

  • Kuliah Berseri IlmuKomputer.Com Copyright 2003 IlmuKomputer.Com

    Step By Step Menjadi Programmer Handal Dengan VB.Net Junindar, ST, MCPD, MOS, MCT, MVP VB.NET

    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.

    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.

    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

    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

  • Kuliah Berseri IlmuKomputer.Com Copyright 2003 IlmuKomputer.Com

    Step By Step Menjadi Programmer Handal Dengan VB.Net Junindar, ST, MCPD, MOS, MCT, MVP VB.NET

    - Setelah berhasil dengan proses simpan, selanjutnya adalah membuat proses penghapusan data. Klik ganda button delete, dan ketikkan sintaks dibawah ini.

    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.

    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

  • Kuliah Berseri IlmuKomputer.Com Copyright 2003 IlmuKomputer.Com

    Step By Step Menjadi Programmer Handal Dengan VB.Net Junindar, ST, MCPD, MOS, MCT, MVP VB.NET

    - 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.

    Program akan menampilkan gambar pada PictureBox pada saat baris DataGridView di klik.

    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

  • Kuliah Berseri IlmuKomputer.Com Copyright 2003 IlmuKomputer.Com

    Step By Step Menjadi Programmer Handal Dengan VB.Net Junindar, ST, MCPD, MOS, MCT, MVP VB.NET

    - Dan pada event Form_Load ketikkan sintaks berikut.

    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.

    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

  • Kuliah Berseri IlmuKomputer.Com Copyright 2003 IlmuKomputer.Com

    Step By Step Menjadi Programmer Handal Dengan VB.Net Junindar, ST, MCPD, MOS, MCT, MVP VB.NET

    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 : [email protected]

  • Kuliah Berseri IlmuKomputer.Com Copyright 2003 IlmuKomputer.Com

    Step By Step Menjadi Programmer Handal Dengan VB.Net Junindar, ST, MCPD, MOS, MCT, MVP VB.NET

    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