Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > บทความจากสมาชิก > Windows Form กับ Upload File ลงใน Database และแสดงผลรายการไฟล์บน Table (VB.Net,C#)



 
Clound SSD Virtual Server

Windows Form กับ Upload File ลงใน Database และแสดงผลรายการไฟล์บน Table (VB.Net,C#)

Windows Form กับ Upload File ลงใน Database และแสดงผลรายการไฟล์บน Table (VB.Net,C#) ในตัวอย่างนี้จะได้เรียนรู้เกี่ยวกับการใช้ OpenFileDialog ในการ Browse และ Upload ไฟล์และจัดเก็บลงใน Database/Table (จัดเก็บเฉพาะชื่อไฟล์ส่วนไฟล์ Save ลงในโฟเดอร์) จากนั้นใน Form จะดึงรายการไฟล์ที่อยู่ใน Table มาแสดงที่ ListView สามารถที่จะคลิก Open หรือ Delete ไฟล์นั้นๆ ได้ การอัพโหลดไฟล์แบบ Multiselect โดยการเลือกหลายๆ ไฟล์ในครั้งเดียว ผ่านการ Browse และกดปุ่ม Shift หรือ Ctrl ซึ่งจะช่วยให้การอัพโหลดไฟล์ทำได้อย่างว่ายและรวดเร็วมาก รวมทั้งวิธีและรุปแบบการจัดเก็บข้อมูลที่ถูกต้อง ไม่ทำให้เปิด ข้อมูลใน Table มีขนาดใหญ่ และ ง่ายต่อการนำไปใช้งาน





Windows Form Upload File to Database


เพื่อความเข้าใจควรอ่าน 2 บทความนี้ให้เข้าใจก่อน
Go to : Windows Form กับ OpenFileDialog : การเปิด Browse และอัพโหลด Save ไฟล์ (VB.Net,C#)
Go to : Windows Form กับ ListView แสดงข้อมูลบน ListView ในรูปแบบ Table/Grid (VB.Net,C#)

mytable
CREATE TABLE [dbo].[mytable](
	[FileID] [int] IDENTITY(1,1) NOT NULL,
	[FileName] [varchar](255) NULL,
	[FilePath] [varchar](255) NULL,
	[FileSize] [int] NULL,
 CONSTRAINT [PK_mytable] PRIMARY KEY CLUSTERED 
(
	[FileID] ASC
) ) ON [PRIMARY]

ให้สร้าง Table ขึ้นมาสำหรับการจัดเก็บข้อมูลไฟล์

Windows Form Upload File to Database

โครสร้างของข้อมูล

Windows Form Upload File to Database

ออกแบบ Form ดังรูป โดยประกอบด้วย ListView, Button ที่มี ID ดังรูป จากนั้นเขียน Code ต่างๆ ดังนี้








VB.Net
 Private strConnString As String = "Server=localhost;UID=sa;PASSWORD=;database=mydatabase"
    Private Sub frmMain_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        ShowData()
    End Sub

    Private Sub ShowData()
        '*** Connect Database
        Dim objConn = New SqlConnection(strConnString)
        objConn.Open()

        Dim strSQL As String = "SELECT * FROM mytable"
        Dim objCmd = New SqlCommand(strSQL, objConn)
        Dim dtReader = objCmd.ExecuteReader()

        '*** ListView Header
        Me.myListView.Clear()
        myListView.Columns.Clear()
        myListView.HideSelection = False
        myListView.Columns.Add("File ID", 50, HorizontalAlignment.Center)
        myListView.Columns.Add("File Name", 140, HorizontalAlignment.Left)
        myListView.Columns.Add("File Path", 140, HorizontalAlignment.Left)
        myListView.Columns.Add("File Size (KB)", 90, HorizontalAlignment.Right)
        myListView.FullRowSelect = True
        myListView.View = View.Details

        '*** ListView Row
        While dtReader.Read()
            Dim lvi = New ListViewItem(dtReader("FileID").ToString())
            lvi.SubItems.Add(dtReader("FileName").ToString())
            lvi.SubItems.Add(dtReader("FilePath").ToString())
            lvi.SubItems.Add(dtReader("FileSize").ToString())
            Me.myListView.Items.Add(lvi)
        End While

        '*** Close Database
        dtReader.Close()
        dtReader = Nothing
        objConn.Close()

        '*** Disabled Open/Delete
        Me.btnOpen.Enabled = False
        Me.btnDelete.Enabled = False
    End Sub

   Private Sub btnUpload_Click(sender As Object, e As EventArgs) Handles btnUpload.Click
        Dim strFolder As String = "/myFile/"
        Dim strFullPath As String = Application.StartupPath + strFolder

        Dim dlg As New OpenFileDialog()
        If dlg.ShowDialog() = DialogResult.OK Then
            '*** Create Folder
            If Not Directory.Exists(strFullPath) Then
                Directory.CreateDirectory(strFullPath)
            End If

            '*** Save File
            Dim filePath As String = dlg.FileName
            Dim fileName As String = Path.GetFileName(filePath)
            File.Copy(filePath, strFullPath & fileName, True)

            '*** Save to Database
            Dim objConn = New SqlConnection(strConnString)
            objConn.Open()

            Dim strSQL As String = "INSERT INTO mytable (FileName,FilePath,FileSize) " &
                " VALUES (@FileName,@FilePath,@FileSize)"

            Dim objCmd = New SqlCommand(strSQL, objConn)
            objCmd.Parameters.AddWithValue("@FileName", fileName)
            objCmd.Parameters.AddWithValue("@FilePath", strFolder & fileName)
            objCmd.Parameters.AddWithValue("@FileSize", (New FileInfo(filePath).Length) / 1024)
            objCmd.ExecuteNonQuery()

            objConn.Close()
            ShowData()
        End If
    End Sub

    Private Sub myListView_SelectedIndexChanged(sender As Object, e As EventArgs) Handles myListView.SelectedIndexChanged
        If Me.myListView.SelectedItems.Count > 0 Then
            '*** Enabled Open/Delete
            Me.btnOpen.Enabled = True
            Me.btnDelete.Enabled = True
        End If
    End Sub
C#
        private string strConnString = "Server=localhost;UID=sa;PASSWORD=;database=mydatabase";
        private void frmMain_Load(object sender, EventArgs e)
        {
            ShowData();
        }

        private void ShowData()
        {
            //*** Connect Database
            var objConn = new SqlConnection(strConnString);
            objConn.Open();

            string strSQL = "SELECT * FROM mytable";
            var objCmd = new SqlCommand(strSQL, objConn);
            var dtReader = objCmd.ExecuteReader();

            //*** ListView Header
            this.myListView.Clear();
            myListView.Columns.Clear();
            myListView.HideSelection = false;
            myListView.Columns.Add("File ID", 50, HorizontalAlignment.Center);
            myListView.Columns.Add("File Name", 140, HorizontalAlignment.Left);
            myListView.Columns.Add("File Path", 140, HorizontalAlignment.Left);
            myListView.Columns.Add("File Size (KB)", 90, HorizontalAlignment.Right);
            myListView.FullRowSelect = true;
            myListView.View = View.Details;

            //*** ListView Row
            while (dtReader.Read())
            {
                var lvi = new ListViewItem(dtReader["FileID"].ToString());
                lvi.SubItems.Add(dtReader["FileName"].ToString());
                lvi.SubItems.Add(dtReader["FilePath"].ToString());
                lvi.SubItems.Add(dtReader["FileSize"].ToString());
                this.myListView.Items.Add(lvi);
            }

            //*** Close Database
            dtReader.Close();
            dtReader = null;
            objConn.Close();

            //*** Disabled Open/Delete
            this.btnOpen.Enabled = false;
            this.btnDelete.Enabled = false;
        }

        private void btnUpload_Click(object sender, EventArgs e)
        {
            string strFolder = "/myFile/";
            string strFullPath = Application.StartupPath + strFolder;

            OpenFileDialog dlg = new OpenFileDialog();
            if (dlg.ShowDialog() == DialogResult.OK)
            {
                //*** Create Folder
                if (!Directory.Exists(strFullPath))
                {
                    Directory.CreateDirectory(strFullPath);
                }

                //*** Save File
                string filePath = dlg.FileName;
                string fileName = Path.GetFileName(filePath);
                File.Copy(filePath, strFullPath + fileName, true);

                //*** Save to Database
                var objConn = new SqlConnection(strConnString);
                objConn.Open();

                string strSQL = "INSERT INTO mytable (FileName,FilePath,FileSize) "
                    + " VALUES  (@FileName,@FilePath,@FileSize)";

                var objCmd = new SqlCommand(strSQL, objConn);
                objCmd.Parameters.AddWithValue("@FileName", fileName);
                objCmd.Parameters.AddWithValue("@FilePath", strFolder + fileName);
                objCmd.Parameters.AddWithValue("@FileSize", (new FileInfo(filePath).Length) / 1024);
                objCmd.ExecuteNonQuery();

                objConn.Close();
                ShowData();
            }
        }

        private void myListView_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (this.myListView.SelectedItems.Count > 0)
            {
                //*** Enabled Open/Delete
                this.btnOpen.Enabled = true;
                this.btnDelete.Enabled = true;
            }
        }
จาก Code นี้จะเป็นการแสดงข้อมูลจาก Table ลงใน ListView และมีปุ่มสำหรับการ Upload ไฟล์ พร้อมกับจัดเก็บลงใน Table

Result

Windows Form Upload File to Database

ให้คลิกที่ Upload เพื่อเริ่มการอัพโหลดไฟล์

Windows Form Upload File to Database

เลือกไฟล์ที่จะอัพโหลด

Windows Form Upload File to Database

ไฟล์จะถูกเพิ่มลงใน Table

Windows Form Upload File to Database

สามารถทดสอบการอัพโหลดไฟล์อื่นๆ เพื่อทดสอบการทำงาน

Windows Form Upload File to Database

เมื่อกลับไปดูที่ Table จะเห็นว่ามีการจัดเก็บเฉพาะชื่อไฟล์และ Path ที่อยู่ของไฟล์เท่านั้น

Windows Form Upload File to Database

โดยไฟฃ์จะถูกจัดเก็บไว้ในโฟเดอร์ /myFile/ ที่อยู่ภายใต้ Application Path








การเปิด Open ไฟล์

VB.Net
    Private Sub btnOpen_Click(sender As Object, e As EventArgs) Handles btnOpen.Click
        If Me.myListView.SelectedItems.Count > 0 Then
            Dim selPath As String = Me.myListView.SelectedItems(0).SubItems(2).Text
            ' File Path
            System.Diagnostics.Process.Start(Application.StartupPath + selPath)
        End If
    End Sub
C#
        private void btnOpen_Click(object sender, EventArgs e)
        {
            if (this.myListView.SelectedItems.Count > 0)
            {
                string selPath = this.myListView.SelectedItems[0].SubItems[2].Text; // File Path
                System.Diagnostics.Process.Start(Application.StartupPath + selPath);
            }
        }
ใน Event ของ btnOpen ให้ใส่คำส่งสำหรับการอ่านไฟล์

Result

Windows Form Upload File to Database

ทดสอบการคลิกที่ Item และ Open

Windows Form Upload File to Database

แสดงไฟล์ที่ถูกเปิด


การลบ Delete ไฟล์

VB.Net
Private Sub btnDelete_Click(sender As Object, e As EventArgs) Handles btnDelete.Click
        If Me.myListView.SelectedItems.Count > 0 Then
            Dim selID As String = Me.myListView.SelectedItems(0).Text
            ' File ID
            Dim selPath As String = Me.myListView.SelectedItems(0).SubItems(2).Text
            ' File Path
            If MessageBox.Show("Delete ?", "Confirm", MessageBoxButtons.YesNoCancel, 
                MessageBoxIcon.Information) = DialogResult.Yes Then
                '*** Delete from Database
                Dim objConn = New SqlConnection(strConnString)
                objConn.Open()

                ' Delete in table
                Dim strSQL As String = "DELETE mytable WHERE FileID = @FileID"
                Dim objCmd = New SqlCommand(strSQL, objConn)
                objCmd.Parameters.AddWithValue("@FileID", selID)
                objCmd.ExecuteNonQuery()

                ' Delete in folder
                If File.Exists(Application.StartupPath + selPath) Then
                    File.Delete(Application.StartupPath + selPath)
                End If

                objConn.Close()
                ShowData()
            End If
        End If
End Sub
C#
        private void btnDelete_Click(object sender, EventArgs e)
        {
            if (this.myListView.SelectedItems.Count > 0)
            {
                string selID = this.myListView.SelectedItems[0].Text; // File ID
                string selPath = this.myListView.SelectedItems[0].SubItems[2].Text; // File Path
                if (MessageBox.Show("Delete ?", "Confirm", MessageBoxButtons.YesNoCancel,
                    MessageBoxIcon.Information) == DialogResult.Yes)
                {
                    //*** Delete from Database
                    var objConn = new SqlConnection(strConnString);
                    objConn.Open();

                    // Delete in table
                    string strSQL = "DELETE mytable WHERE FileID = @FileID";
                    var objCmd = new SqlCommand(strSQL, objConn);
                    objCmd.Parameters.AddWithValue("@FileID", @selID);
                    objCmd.ExecuteNonQuery();

                    // Delete in folder
                    if (File.Exists(Application.StartupPath + selPath))
                    {
                        File.Delete(Application.StartupPath + selPath);
                    }

                    objConn.Close();
                    ShowData();
                }
            }
        }
ในการลบไฟล์จะต้องลบทั้งข้อมูลที่อยู่ใน Table และไฟล์ที่อยู่ใน Path ของ Folder

Result

Windows Form Upload File to Database

คลืกราบการเพื่อทดสอบการ ลบหรือ Delete

Windows Form Upload File to Database

ข้อมูลบน ListView ถูกลบไปเรียบร้อย

Windows Form Upload File to Database

ข้อมูลใน Table ก็ถูกลบออกไปเช่นเดียวกัน

Windows Form Upload File to Database

รวมทั้งไฟล์ที่อยู่ในโฟเดอร์ก็จะถูกลบ Delete ออกไปด้วย


การอัพโหลดไฟล์แบบหลายๆ ไฟล์ (Multiselect) ให้แก้ไขในส่วนของ method : btnUpload_Click ดังนี้

VB.Net
    Private Sub btnUpload_Click(sender As Object, e As EventArgs) Handles btnUpload.Click
        Dim strFolder As String = "/myFile/"
        Dim strFullPath As String = Application.StartupPath + strFolder

        Dim dlg As New OpenFileDialog()
        dlg.Multiselect = True
        If dlg.ShowDialog() = DialogResult.OK Then
            '*** Create Folder
            If Not Directory.Exists(strFullPath) Then
                Directory.CreateDirectory(strFullPath)
            End If

            '*** Save to Database
            Dim objConn = New SqlConnection(strConnString)
            objConn.Open()

            '*** Save File
            For Each filePath As String In dlg.FileNames
                Dim fileName As String = Path.GetFileName(filePath)
                File.Copy(filePath, strFullPath & fileName, True)

                Dim strSQL As String = "INSERT INTO mytable (FileName,FilePath,FileSize) " &
                " VALUES (@FileName,@FilePath,@FileSize)"

                Dim objCmd = New SqlCommand(strSQL, objConn)
                objCmd.Parameters.AddWithValue("@FileName", fileName)
                objCmd.Parameters.AddWithValue("@FilePath", strFolder & fileName)
                objCmd.Parameters.AddWithValue("@FileSize", (New FileInfo(filePath).Length) / 1024)
                objCmd.ExecuteNonQuery()
            Next

            objConn.Close()
            ShowData()
        End If
    End Sub
C#
        private void btnUpload_Click(object sender, EventArgs e)
        {
            string strFolder = "/myFile/";
            string strFullPath = Application.StartupPath + strFolder;

            OpenFileDialog dlg = new OpenFileDialog();
            dlg.Multiselect = true;
            if (dlg.ShowDialog() == DialogResult.OK)
            {
                //*** Create Folder
                if (!Directory.Exists(strFullPath))
                {
                    Directory.CreateDirectory(strFullPath);
                }

                //*** Save to Database
                var objConn = new SqlConnection(strConnString);
                objConn.Open();

                //*** Save File
                foreach (string filePath in dlg.FileNames)
                {
                    string fileName = Path.GetFileName(filePath);
                    File.Copy(filePath, strFullPath + fileName, true);

                    string strSQL = "INSERT INTO mytable (FileName,FilePath,FileSize) "
                               + " VALUES (@FileName,@FilePath,@FileSize)";

                    var objCmd = new SqlCommand(strSQL, objConn);
                    objCmd.Parameters.AddWithValue("@FileName", fileName);
                    objCmd.Parameters.AddWithValue("@FilePath", strFolder + fileName);
                    objCmd.Parameters.AddWithValue("@FileSize", (new FileInfo(filePath).Length) / 1024);
                    objCmd.ExecuteNonQuery();
                }

                objConn.Close();
                ShowData();
            }
        }

Result

Windows Form Upload File to Database

ทดสอบการอัพโหลดไฟล์

Windows Form Upload File to Database

ให้เลือกไฟล์หลายๆ รายการโดยการกดปุ่ม Shift หรือ Ctrl

Windows Form Upload File to Database

รายการไฟล์ที่เลือกถูกจัดเก็บลงใน Table

Windows Form Upload File to Database

รวมทั้งไฟล์จะถูก Copy และ Save ลงในโฟเดอร์



.


   
Share
Bookmark.   

  By : TC Admin
  Article : บทความเป็นการเขียนโดยสมาชิก หากมีปัญหาเรื่องลิขสิทธิ์ กรุณาแจ้งให้ทาง webmaster ทราบด้วยครับ
  Score Rating :
  Create Date : 2017-02-17
  Download : No files
Sponsored Links
ThaiCreate.Com Forum


Comunity Forum Free Web Script
Jobs Freelance Free Uploads
Free Web Hosting Free Tools

สอน PHP ผ่าน Youtube ฟรี
สอน Android การเขียนโปรแกรม Android
สอน Windows Phone การเขียนโปรแกรม Windows Phone 7 และ 8
สอน iOS การเขียนโปรแกรม iPhone, iPad
สอน Java การเขียนโปรแกรม ภาษา Java
สอน Java GUI การเขียนโปรแกรม ภาษา Java GUI
สอน JSP การเขียนโปรแกรม ภาษา Java
สอน jQuery การเขียนโปรแกรม ภาษา jQuery
สอน .Net การเขียนโปรแกรม ภาษา .Net
Free Tutorial
สอน Google Maps Api
สอน Windows Service
สอน Entity Framework
สอน Android
สอน Java เขียน Java
Java GUI Swing
สอน JSP (Web App)
iOS (iPhone,iPad)
Windows Phone
Windows Azure
Windows Store
Laravel Framework
Yii PHP Framework
สอน jQuery
สอน jQuery กับ Ajax
สอน PHP OOP (Vdo)
Ajax Tutorials
SQL Tutorials
สอน SQL (Part 2)
JavaScript Tutorial
Javascript Tips
VBScript Tutorial
VBScript Validation
Microsoft Access
MySQL Tutorials
-- Stored Procedure
MariaDB Database
SQL Server Tutorial
SQL Server 2005
SQL Server 2008
SQL Server 2012
-- Stored Procedure
Oracle Database
-- Stored Procedure
SVN (Subversion)
แนวทางการทำ SEO
ปรับแต่งเว็บให้โหลดเร็ว


Hit Link
   







Load balance : Server 05
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่