How to Add and Retrieve Multiple Images in VB.Net
In this tutorial, you will learn how to add and retrieve multiple images in VB.Net.
First, create your project and add these tools on your blank project. (see image below.)

Then, create a database named retrieveimage then add this code to add image table with its columns.
[mysql]
CREATE TABLE IF NOT EXISTS `image` (
`ID` int(10) NOT NULL,
`image1` longblob NOT NULL,
`image2` longblob NOT NULL,
`image3` longblob NOT NULL,
PRIMARY KEY (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
[/mysql]Then on our “choose image” button, insert this line of code:
[vbnet]
Try
Dim OFD As FileDialog = New OpenFileDialog()
OFD.Filter = "Image File (*.jpg;*)|*.jpg;*"
If OFD.ShowDialog() = DialogResult.OK Then
imgpath = OFD.FileName
PictureBox1.ImageLocation = imgpath
End If
OFD = Nothing
Catch ex As Exception
MsgBox(ex.Message.ToString())
End Try
[/vbnet]For the next “choose image” button just change the name of PictureBox depending on its upper picture box name.
Add this line of code at the top of your Form1 code:
[vbnet]
Imports MySql.Data.MySqlClient
Dim imgpath As String
Dim arrImage() As Byte
Dim arrImage2() As Byte
Dim arrImage3() As Byte
Dim conn As MySqlConnection
Dim cmd As MySqlCommand
Dim da As MySqlDataAdapter
Dim sql As String
Dim result As Integer
[/vbnet]Next, on the “Add Image” button, insert this code:
[vbnet]
Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
If TextBox1.Text = "" Then
MsgBox("Input ID!")
ElseIf IsNothing(PictureBox1.Image) Then
MsgBox("Select image 1!")
ElseIf IsNothing(PictureBox2.Image) Then
MsgBox("Select image 2!")
ElseIf IsNothing(PictureBox3.Image) Then
MsgBox("Select image 3!")
Else
Try
Dim mstream As New System.IO.MemoryStream()
PictureBox1.Image.Save(mstream, System.Drawing.Imaging.ImageFormat.Jpeg)
arrImage = mstream.GetBuffer()
Dim FileSize As UInt32
FileSize = mstream.Length
mstream.Close()
conn = New MySqlConnection
conn.ConnectionString = "server=localhost; user id=root; password=; database=retrieveimage;"
conn.Open()
sql = "INSERT INTO image (`ID`, `image1`) VALUES (@ID, @Image1);"
cmd = New MySqlCommand
With cmd
.Connection = conn
.CommandText = sql
.Parameters.Clear()
.Parameters.AddWithValue("@ID", TextBox1.Text)
.Parameters.AddWithValue("@Image1", arrImage)
.ExecuteNonQuery()
End With
Catch ex As MySqlException
MsgBox(ex.Message)
Finally
conn.Close()
Try
Dim mstream As New System.IO.MemoryStream()
PictureBox2.Image.Save(mstream, System.Drawing.Imaging.ImageFormat.Jpeg)
arrImage2 = mstream.GetBuffer()
Dim FileSize As UInt32
FileSize = mstream.Length
mstream.Close()
conn = New MySqlConnection
conn.ConnectionString = "server=localhost; user id=root; password=; database=retrieveimage;"
conn.Open()
sql = "UPDATE image SET image2 = @Image2 WHERE ID = @ID;"
cmd = New MySqlCommand
With cmd
.Connection = conn
.CommandText = sql
.Parameters.Clear()
.Parameters.AddWithValue("@ID", TextBox1.Text)
.Parameters.AddWithValue("@Image2", arrImage2)
.ExecuteNonQuery()
End With
Catch ex As MySqlException
MsgBox(ex.Message)
Finally
conn.Close()
Try
Dim mstream As New System.IO.MemoryStream()
PictureBox3.Image.Save(mstream, System.Drawing.Imaging.ImageFormat.Jpeg)
arrImage3 = mstream.GetBuffer()
Dim FileSize As UInt32
FileSize = mstream.Length
mstream.Close()
conn = New MySqlConnection
conn.ConnectionString = "server=localhost; user id=root; password=; database=retrieveimage;"
conn.Open()
sql = "UPDATE image SET image3 = @Image3 WHERE ID = @ID;"
With cmd
.Connection = conn
.CommandText = sql
.Parameters.Clear()
.Parameters.AddWithValue("@ID", TextBox1.Text)
.Parameters.AddWithValue("@Image3", arrImage3)
result = .ExecuteNonQuery()
End With
Catch ex As MySqlException
MsgBox(ex.Message)
Finally
conn.Close()
If result = 0 Then
MsgBox("Error in registering!")
Else
MsgBox("Successfully added images!")
End If
TextBox1.Text = ""
PictureBox1.Image = Nothing
PictureBox2.Image = Nothing
PictureBox3.Image = Nothing
End Try
End Try
End Try
End If
End Sub
[/vbnet]To retrieve our images from the database, double click the “Retrieve Image” button and insert this code.
[vbnet]
Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click
If TextBox1.Text = "" Then
MsgBox("Input ID for retrieval!")
Else
Try
conn = New MySqlConnection
conn.ConnectionString = "server=localhost; user id=root; password=; database=retrieveimage;"
conn.Open()
sql = "SELECT * FROM image WHERE ID = @ID;"
cmd = New MySqlCommand
With cmd
.Connection = conn
.CommandText = sql
.Parameters.Clear()
.Parameters.AddWithValue("@ID", TextBox1.Text)
.ExecuteNonQuery()
End With
Dim arrImage(), arrImage2(), arrImage3() As Byte
Dim dt As New DataTable
da = New MySqlDataAdapter
da.SelectCommand = cmd
da.Fill(dt)
If dt.Rows.Count > 0 Then
MsgBox("Showing results!")
arrImage = dt.Rows(0).Item(1)
arrImage2 = dt.Rows(0).Item(2)
arrImage3 = dt.Rows(0).Item(3)
Dim mstream As New System.IO.MemoryStream(arrImage)
Dim mstream2 As New System.IO.MemoryStream(arrImage2)
Dim mstream3 As New System.IO.MemoryStream(arrImage3)
PictureBox1.Image = Image.FromStream(mstream)
PictureBox2.Image = Image.FromStream(mstream2)
PictureBox3.Image = Image.FromStream(mstream3)
Else
MsgBox("No results!")
End If
Catch ex As MySqlException
MsgBox(ex.Message)
Finally
conn.Close()
da.Dispose()
End Try
End If
End Sub
[/vbnet]Success! You have learned How to Add and Retrieve Multiple Images in VB.Net!
RAR Extraction Password:
Password: luffypirates
For questions or any other concerns or thesis/capstone creation with documentation, you can contact me through the following:
E-Mail: [email protected]
Facebook: facebook.com/kirk.lavapiez
Contact No.: +639771069640
To download the sample project, click here.
Ian Hero L. Lavapiez
BSIT Graduate
System Analyst and Developer
Related topic(s) that you may like:
- How to Use Module and its uses in VB.Net
- Transferring Multiple Data from DataGridView to mySQL database
Technology stack and requirements
To run this VB.NET project, you need the following on your development machine:
- Visual Studio 2019 or later. The free Community Edition is enough for building, debugging, and running the project.
- .NET Framework 4.7.2 or higher. Most Windows 10 and 11 systems have it preinstalled through Windows Update.
- MySQL Server 8.0 or MSSQL Express 2019. Choose whichever your capstone panel prefers; both work with VB.NET data adapters.
- MySQL Connector/NET or SqlClient library. Add via NuGet Package Manager inside Visual Studio.
- Crystal Reports (optional). Required only if the project generates printable reports; install the runtime redistributable.
Installing the source code
The download link contains a ZIP archive with the full solution. Extract and set up in five steps:
- Extract the archive to a folder outside Program Files (avoids permission issues).
- Open the .sln file in Visual Studio. It loads the full solution with all forms and modules.
- Restore NuGet packages. Right-click the solution then Restore NuGet Packages if prompted.
- Import the database. Locate the .sql file in the archive and import via phpMyAdmin (MySQL) or SQL Server Management Studio.
- Update the connection string in App.config or module code to match your local database name, user, and password.
How to use this project for your BSIT capstone
This VB.NET project maps cleanly to standard BSIT capstone documentation. Suggested chapter alignment:
- Chapter 1 (Introduction). Discuss the problem the system solves in real-world context. Cite Philippine business or academic use cases where a manual process could be replaced.
- Chapter 2 (Review of Related Literature). Compare this system’s features against 5-10 similar published projects. Cite journals like IJERT or IEEE Access for academic-standard sources.
- Chapter 3 (Methodology). Include Use Case Diagram, Data Flow Diagram, Entity Relationship Diagram, and Activity Diagram covering all major workflows in the system.
- Chapter 4 (Results and Discussion). Screenshot each module of the running system with a caption explaining what data it processes and which user role interacts with it.
- Chapter 5 (Conclusion and Recommendations). Identify features that could be added in a Version 2, such as web dashboard, mobile app, or REST API export.
Modules typical of How to Add and Retrieve Multiple Images
- Master data. CRUD forms for the primary entities the system manages, with search and filter.
- Transaction processing. Data entry forms for the day-to-day operations the system automates.
- Reports. Formatted printable output summarizing activity per day, per user, or per category.
- User management. Login with role-based permissions (Admin, Encoder, Viewer).
- Backup and restore. Export database to a .sql or .bak file and restore when needed.
Common enhancements for capstone review
- Modernize the UI. Add Bunifu or Guna UI controls for a more polished, modern appearance.
- Add printable receipts. Integrate a printer preview form with page-setup options.
- Multi-user concurrency. Ensure the database handles simultaneous writes without lost-update errors.
- Web version. Rewrite the front-end in ASP.NET Core or React for a modern deployment path.
Official documentation
Frequently Asked Questions
What does this VB.NET tutorial cover?
Focused VB.NET language or library tutorial showing a single concept with working code. Use as a building block when assembling a larger system.
What Visual Studio and SQL Server versions does this VB.NET project require?
Most projects use VB.NET WinForms on .NET Framework 4.5+ with SQL Server 2012 Express or higher. To run: install Visual Studio 2019 / 2022 (Community is free) with the ‘Desktop development with .NET’ workload, install SQL Server Express + SSMS, open the .sln file, build, run.
How do I set up the database for this VB.NET project?
Open SQL Server Management Studio (SSMS) and connect to your SQL Server (e.g. localhost\SQLEXPRESS). Right-click Databases, choose Restore Database OR New Database then import the included .sql script. Update the connection string in App.config (or in code-behind Module) with your server name + credentials. Rebuild and run.
Can I use this VB.NET project for a BSIT capstone or thesis?
Yes, VB.NET is one of the most accepted languages by Philippine BSIT panels. Extend it: add role-based access (admin/staff/customer login redirect), Crystal Reports or RDLC reports, dashboards with Chart control, audit log, multi-branch support. Pair with Chapter 1-5 documentation matching your panel’s rubric.
Why am I getting ‘connection error’ or ‘cannot find SQL Server’?
Three common VB.NET issues: (1) Connection error: SQL Server isn’t running. Open SQL Server Configuration Manager and verify SQL Server (SQLEXPRESS) service is started. (2) Wrong server name in connection string. Try .\SQLEXPRESS, (local)\SQLEXPRESS, or your machine name. (3) Login failed: SQL Server is set to ‘Windows-only’ authentication. Switch to Mixed Mode in SSMS Server Properties, Security.
Where can I find more VB.NET projects with source code?
Browse the VB.NET Projects hub for the full library. For C# WinForms alternatives see C# Projects. For ASP.NET web alternatives see ASP.NET Projects. For BSIT capstone idea lists see 150 Best Capstone Project Ideas.
