WPF Save an Image to Database in VB.NET
This article demonstrate how to store an image in database in WPF using Visual Basic.
Often, In applications, we require to save images to database (for eg. photograph of employee, students etc.). Here we learn how it comes in effect using WPF and VB.net.
To store an image to database, I created a table named "ImgContainer" which contains three columns -
||Defines as Identity and handeled by itself to generate and store the unique Id for each image stored in database
||This field holds the name of each image
||Image files are stored as binary in this column
Now, come to the front-end :
Controls on the interface :
Text Box Control
- Browse... (Button1)
- Upload Image to Database (Button2)
- Exit (Button3)
- TextBox1 (Used to show the full path of the selected image)
- Image1 (To show the selected Image)
How it works?
- Label1 (To display the messages/errors)
Note : Download source code to learn in better way, code snippets are just used to clear the steps and may not work separately.
Step 1: Select a File from storage disk.
Dim FileDialog As New
FileDialog.Title = "Select A File"
FileDialog.InitialDirectory = ""
FileDialog.Filter = "Image Files (*.gif,*.jpg,*.jpeg,*.bmp,*.png)|*.gif;*.jpg;*.jpeg;*.bmp;*.png"
FileDialog.FilterIndex = 1
Step 2: Display the path of file in the TextBox1.
Label1.Content = FileName(TextBox1.Text.Trim)
Step 3: Display the file name on Label1
TextBox1.Text = FileDialog.FileName()
* File Dialog is a function which takes full path of the file and returns the file name.
Step 4: Display the Image in the Image Control - Image1
Dim bmp As New BitmapImage(New Uri(TextBox1.Text.Trim))
Image1.Source = bmp
* If you don't select any image file and click on cancel button of OpenFileDialog, you'll receive a message in Label1
Label1.Content = "You didn't select any image file...."
Step 5: Save image to database - When you select an image click on "Upload Image to Database" Button. If you have selected an image, you'll receive the following message as shown in below image
Dim Stream As FileStream
Dim Reader As StreamReader
Stream = New FileStream(TextBox1.Text, FileMode.Open, FileAccess.Read)
Reader = New StreamReader(Stream)
Dim ImgData(Stream.Length - 1) As Byte
Stream.Read(ImgData, 0, Stream.Length - 1)
Dim str As String = "Data Source=.;uid=sa;pwd=wintellect;database=MYDATABASE"
Dim con As New SqlConnection(str)
Dim sql As String = "INSERT INTO ImgContainer (Name, ImgData) VALUES(@Name, @ImgData)"
Dim cmd As New SqlCommand(sql, con)
cmd.Parameters.Add("@Name", SqlDbType.Text).Value = FileName(TextBox1.Text.Trim)
cmd.Parameters.Add("@ImgData", SqlDbType.Binary, Stream.Length).Value = ImgData
Label1.Content = FileName(TextBox1.Text.Trim) & " Stored Successfully...."
Otherwise you'll receive a message at Label1 - "Empty path name is not legal".