Hey pujandoshi,
Please refer below sample.
Namespaces
C#
using System.Data.SqlClient;
using System.IO;
VB.Net
Imports System.Data.SqlClient
Imports System.IO
Code
C#
public Form1()
{
InitializeComponent();
this.listView1.CheckBoxes = true;
BindDataGridView();
}
private void BindDataGridView()
{
string constr = @"Data Source=.\SQL2005;Initial Catalog=dbFiles;User id = sa;password=pass@123";
using (SqlConnection conn = new SqlConnection(constr))
{
SqlCommand cmd = new SqlCommand("select Data, Name from tblFiles WHERE ContentType IN ('image/jpeg','image/gif','image/png')", conn);
conn.Open();
SqlDataReader sdr = cmd.ExecuteReader();
ImageList imgList = new ImageList();
imgList.Images.Clear();
listView1.LargeImageList = imgList;
int i = 0;
while (sdr.Read())
{
byte[] bytes = (byte[])sdr["Data"];
imgList.Images.Add(Image.FromStream(new MemoryStream(bytes)));
imgList.ImageSize = new Size(100, 100);
listView1.Items.Add(sdr["Name"].ToString(), i);
i++;
}
conn.Close();
}
}
private void Insert(object sender, EventArgs e)
{
using (OpenFileDialog openFileDialog1 = new OpenFileDialog())
{
openFileDialog1.Multiselect = true;
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
foreach (string filePath in openFileDialog1.FileNames)
{
byte[] bytes = File.ReadAllBytes(filePath);
string contentType = "";
switch (Path.GetExtension(filePath))
{
case ".jpg":
contentType = "image/jpeg";
break;
case ".png":
contentType = "image/png";
break;
case ".gif":
contentType = "image/gif";
break;
case ".bmp":
contentType = "image/bmp";
break;
}
string constr = @"Data Source=.\SQL2005;Initial Catalog=dbFiles;uid=sa;pwd=pass@123";
using (SqlConnection conn = new SqlConnection(constr))
{
string sql = "INSERT INTO tblFiles VALUES(@Name, @ContentType, @Data)";
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
cmd.Parameters.AddWithValue("@Name", Path.GetFileName(filePath));
cmd.Parameters.AddWithValue("@ContentType", contentType);
cmd.Parameters.AddWithValue("@Data", bytes);
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}
}
}
}
}
this.Hide();
Form1 f1 = new Form1();
f1.ShowDialog();
this.BindDataGridView();
}
private void listView1_ItemCheck(object sender, ItemCheckEventArgs e)
{
if (e.Index >= 0)
{
foreach (ListViewItem item in listView1.CheckedItems)
{
if (item.Index == e.Index)
{
item.Checked = true;
}
else
{
item.Checked = false;
}
}
}
}
VB.Net
Public Sub New()
InitializeComponent()
BindDataGridView()
Me.listView1.CheckBoxes = True
End Sub
Private Sub BindDataGridView()
Dim constr As String = "Data Source=.\SQL2005;Initial Catalog=dbFiles;User id = sa;password=pass@123"
Using conn As SqlConnection = New SqlConnection(constr)
Dim cmd As SqlCommand = New SqlCommand("select Data, Name from tblFiles WHERE ContentType IN ('image/jpeg','image/gif','image/png')", conn)
conn.Open()
Dim sdr As SqlDataReader = cmd.ExecuteReader()
Dim imgList As ImageList = New ImageList()
listView1.View = View.LargeIcon
imgList.Images.Clear()
listView1.LargeImageList = imgList
Dim i As Integer = 0
While sdr.Read()
Dim bytes As Byte() = CType(sdr("Data"), Byte())
imgList.Images.Add(Image.FromStream(New MemoryStream(bytes)))
imgList.ImageSize = New Size(100, 100)
listView1.Items.Add(sdr("Name").ToString(), i)
i += 1
End While
conn.Close()
End Using
End Sub
Private Sub Insert(ByVal sender As Object, ByVal e As EventArgs) Handles button1.Click
Using openFileDialog1 As OpenFileDialog = New OpenFileDialog()
openFileDialog1.Multiselect = True
If openFileDialog1.ShowDialog() = DialogResult.OK Then
For Each filePath As String In openFileDialog1.FileNames
Dim bytes As Byte() = File.ReadAllBytes(filePath)
Dim contentType As String = ""
Select Case Path.GetExtension(filePath)
Case ".jpg"
contentType = "image/jpeg"
Case ".png"
contentType = "image/png"
Case ".gif"
contentType = "image/gif"
Case ".bmp"
contentType = "image/bmp"
End Select
Dim constr As String = "Data Source=.\SQL2005;Initial Catalog=dbFiles;uid=sa;pwd=pass@123"
Using conn As SqlConnection = New SqlConnection(constr)
Dim sql As String = "INSERT INTO tblFiles VALUES(@Name, @ContentType, @Data)"
Using cmd As SqlCommand = New SqlCommand(sql, conn)
cmd.Parameters.AddWithValue("@Name", Path.GetFileName(filePath))
cmd.Parameters.AddWithValue("@ContentType", contentType)
cmd.Parameters.AddWithValue("@Data", bytes)
conn.Open()
cmd.ExecuteNonQuery()
conn.Close()
End Using
End Using
Next
End If
End Using
Me.Hide()
Dim f1 As Form1 = New Form1()
f1.ShowDialog()
Me.BindDataGridView()
End Sub
Private Sub listView1_ItemCheck(ByVal sender As Object, ByVal e As ItemCheckEventArgs) Handles listView1.ItemCheck
If e.Index >= 0 Then
For Each item As ListViewItem In listView1.CheckedItems
If item.Index = e.Index Then
item.Checked = True
Else
item.Checked = False
End If
Next
End If
End Sub
Screenshot
