This way
Namespaces
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.IO;
C#
public Form1()
{
InitializeComponent();
this.PopulateImages();
}
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog op1 = new OpenFileDialog();
op1.Multiselect = true;
op1.ShowDialog();
op1.Filter = "allfiles|*.xls";
int count = 0;
string[] FName;
foreach (string s in op1.FileNames)
{
FName = s.Split('\\');
string folderPath = "C:\\Files\\";
if (!Directory.Exists(folderPath))
{
Directory.CreateDirectory(folderPath);
}
if (!File.Exists(folderPath + FName[FName.Length - 1]))
{
File.Copy(s, folderPath + FName[FName.Length - 1]);
}
count++;
String strConnString = ConfigurationManager.ConnectionStrings["ConString"].ToString();
string strQuery = "INSERT INTO tblFiles (FileName, FilePath) VALUES(@FileName, @FilePath)";
using (SqlConnection con = new SqlConnection(strConnString))
{
using (SqlCommand cmd = new SqlCommand(strQuery))
{
cmd.Parameters.AddWithValue("@FileName", FName[FName.Length - 1]);
cmd.Parameters.AddWithValue("@FilePath", folderPath + FName[FName.Length - 1]);
cmd.CommandType = CommandType.Text;
cmd.Connection = con;
con.Open();
cmd.ExecuteNonQuery();
con.Close();
con.Dispose();
}
}
}
MessageBox.Show(Convert.ToString(count) + " File(s) copied");
this.PopulateImages();
}
private void PopulateImages()
{
dataGridView1.ColumnCount = 0;
dataGridView1.AutoGenerateColumns = false;
DataGridViewImageColumn ImageControl = new DataGridViewImageColumn();
ImageControl.Name = "ImageControl";
dataGridView1.Columns.Add(ImageControl);
String strConnString = ConfigurationManager.ConnectionStrings["ConString"].ConnectionString;
string strQuery = "SELECT FilePath FROM tblFiles";
using (SqlConnection con = new SqlConnection(strConnString))
{
using (SqlCommand cmd = new SqlCommand(strQuery))
{
cmd.CommandType = CommandType.Text;
cmd.Connection = con;
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds);
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
Image img;
string path = ds.Tables[0].Rows[i]["FilePath"].ToString();
img = new Bitmap(path);
dataGridView1.Rows.Add();
dataGridView1.Rows[i].Cells[0].Value = img;
}
}
}
}
SQL
CREATE TABLE [dbo].[tblFiles](
[ID] [int] IDENTITY(1,1) NOT NULL,
[FileName] [varchar](50) NOT NULL,
[FilePath] [varchar](200) NOT NULL
) ON [PRIMARY]
GO
In the Form you need to add a DataGridView.
VB
Namespaces
Imports System.IO
Imports System.Configuration
Imports System.Data.SqlClient
Code
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim op1 As New OpenFileDialog()
op1.Multiselect = True
op1.ShowDialog()
op1.Filter = "allfiles|*.xls"
Dim count As Integer = 0
Dim FName As String()
For Each s As String In op1.FileNames
FName = s.Split("\"c)
Dim folderPath As String = "C:\Files\"
If Not Directory.Exists(folderPath) Then
Directory.CreateDirectory(folderPath)
End If
If Not File.Exists(folderPath + FName(FName.Length - 1)) Then
File.Copy(s, folderPath + FName(FName.Length - 1))
End If
count += 1
Dim strConnString As [String] = ConfigurationManager.ConnectionStrings("ConString").ToString()
Dim strQuery As String = "INSERT INTO tblFiles (FileName, FilePath) VALUES(@FileName, @FilePath)"
Using con As New SqlConnection(strConnString)
Using cmd As New SqlCommand(strQuery)
cmd.Parameters.AddWithValue("@FileName", FName(FName.Length - 1))
cmd.Parameters.AddWithValue("@FilePath", folderPath + FName(FName.Length - 1))
cmd.CommandType = CommandType.Text
cmd.Connection = con
con.Open()
cmd.ExecuteNonQuery()
con.Close()
con.Dispose()
End Using
End Using
Next
MessageBox.Show(Convert.ToString(count) + " File(s) copied")
Me.PopulateImages()
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.PopulateImages()
End Sub
Private Sub PopulateImages()
DataGridView1.ColumnCount = 0
DataGridView1.AutoGenerateColumns = False
Dim ImageControl As New DataGridViewImageColumn()
ImageControl.Name = "ImageControl"
DataGridView1.Columns.Add(ImageControl)
Dim strConnString As String = ConfigurationManager.ConnectionStrings("ConString").ConnectionString
Dim strQuery As String = "SELECT FilePath FROM tblFiles"
Using con As New SqlConnection(strConnString)
Using cmd As New SqlCommand(strQuery)
cmd.CommandType = CommandType.Text
cmd.Connection = con
Dim da As New SqlDataAdapter(cmd)
Dim ds As New DataSet()
da.Fill(ds)
For i As Integer = 0 To ds.Tables(0).Rows.Count - 1
Dim img As Image
Dim path As String = ds.Tables(0).Rows(i)("FilePath").ToString()
img = New Bitmap(path)
DataGridView1.Rows.Add()
DataGridView1.Rows(i).Cells(0).Value = img
Next
End Using
End Using
End Sub