Code C# Insert Multi Rows To Database SQL

C# insert multi rows to database SQL Server có nghĩa là insert nhiều dòng, nhiều bản ghi vào cơ sở dữ liệu SQL sử dụng ngôn ngữ lập trình C#.

Insert nhiều dòng, nhiều bản ghi vào cơ sở dữ liệu MS SQL Server trong C# được dùng nhiều trong lập trình các ứng dụng phần mềm và web.

 

Cách insert nhiều dòng vào cơ sở dữ liệu SQL Database trong C#.

Trong C# có 3 cách thường dùng để insert nhiều dòng, nhiều bản ghi vào cơ sở dữ liệu SQL như sau:

- C# Insert nhiều dòng dữ liệu, insert nhiều bản ghi vào cơ sở dữ liệu sử dụng vòng lặp for.

- C# Insert nhiều dòng dữ liệu vào cơ sở dữ liệu database sử dụng Insert a Table to Database.

- C# Insert nhiều dòng vào cơ sở dữ liệu sử dụng Bulk Insert trong SQL.

Trong 3 cách insert nhiều dòng dữ liệu nêu ở bên trên thì cách Insert a Table to Databse và Bulk Insert thường được dùng để inser dữ liệu lớn Big Data.Bởi vì sử dụng Insert a Table to Databse và Bulk Insert tốc độ insert vào cơ sở dữ liều Database sẽ nhanh hơn rất nhiều so với sử dụng vòng lặp for thông thường.Tuy nhiên trong phạm vi bài này chúng tôi sẽ hướng dẫn các bạn cách insert nhiều dòng, nhiều bản ghi vào Database SQL bằng cách sử dụng vòng lặp for thông thường để insert một dữ liệu lớn (Big Data) và bài sau chúng tôi sẽ hướng dẫn bạn Insert Big Data trong C# bằng cách sử dụng Insert Table to Databse SQL.

 

Các bước tạo project insert Big Data trong C# sử dụng vòng lặp For như sau:

1.Tạo bảng (table) trong cơ sở dữ liệu

2.Tạo Form để insert dữ liệu trong Windows Form

3.Tạo dữ liệu lớn (Big Data)

4.Viết code C# insert nhiều dòng, nhiều bản ghi vào cơ sở dữ liệu SQL (Insert Big Data to Database SQL)

5.Chạy chương trình và kiểm tra kết quả.

 

- Tạo bảng (table) trong cơ sở dữ liệu

Tạo bảng Products_t (table) trong cơ sở dữ liệu ihoclaptrinh (Database)

 

- Tạo Form insert dữ liệu trong Windows Form

Tạo Form Frm_InsertBigData

Thêm các Controls vào form:

+ Thêm Label lbl_TotalRecordsDataInserted để hiển thị số bản ghi đã được thêm vào cơ sở dữ liệu.

+ Thêm Label lbl_StartTime để hiển thị thời gian bắt đầu insert dữ liệu.

+ Thêm Label lbl_EndTime để hiển thị thời gian kết thúc insert dữ liệu.

+ Thêm Button btn_InsertBigData là nút để thực hiện sự kiện insert dữ liệu vào cơ sở dữ liệu SQL Database.

+ Thêm DataGridView dtg_ListData_Database để hiện thị dữ liệu đã insert từ cơ sở dữ liệu SQL Database

 

- Tạo dữ liệu lớn (Big Data)

Ví dụ chúng ta cần insert khoảng 1 triệu sản phẩm (1 million - 1.000.000 products) vào hệ thống phần mềm quản lý sản phẩm.Nó có nghĩa là chúng ta sẽ cần insert dữ liệu lớn (Big Data) khoảng 1 triệu dòng dữ liệu ( Insert Big Data 1 million rows).

Chúng ta sẽ tạo dữ liệu lớn (Big Data) cho 1 triệu sản phẩm (1 million products) như sau:

Ví dụ

           //Create data 1 million rows of products and add to Datatable
            DataTable dt_BigData = new DataTable();
            DataColumn column1 = null;
            column1 = new DataColumn("ProductID");
            dt_BigData.Columns.Add(column1);

            DataColumn column2 = null;
            column2 = new DataColumn("ProductName");
            dt_BigData.Columns.Add(column2);

            //Create Big Data 1.000.000 records of products and add to Datatbale
            for (int i = 1; i <= 1000000; i++)
            {
                DataRow d_row = dt_BigData.NewRow();
                d_row["ProductID"] = "ProductID_" + i.ToString();
                d_row["ProductName"] = "ProductName_" + i.ToString();
                dt_BigData.Rows.Add(d_row);
            }

 

- Viết code C# insert nhiều dòng, nhiều bản ghi vào cơ sở dữ liệu SQL (Insert Big Data to Database SQL)

Sử dụng vòng lặp for trong C# để insert nhiều dòng vào cơ sở dữ liệu SQL như sau:

Ví dụ

            //Show Start time - Thời gian bắt đầu insert dữ liệu
            lbl_StartTime.Text = Convert.ToString(DateTime.Now.ToString());

            //Insert Data  1 million rows to Database SQL
            String Str_connect_DB = "data source=192.168.10; initial catalog=ihoclaptrinh; user id=sa; password=123456";
            SqlConnection conn = new SqlConnection(Str_connect_DB);
            conn.Open();
            for (int k = 0; k < dt_BigData.Rows.Count; k++)
            {
                    SqlCommand sqlCmd = new SqlCommand("INSERT INTO Products_t(ProductID,ProductName) VALUES('" + dt_BigData.Rows[k]["ProductID"] + "','" + dt_BigData.Rows[k]["ProductName"] + "')", conn);
                    sqlCmd.CommandType = CommandType.Text;
                    sqlCmd.ExecuteNonQuery();
            }


            //Show End time - Thời gian kết thúc insert dư liệu
            lbl_EndTime.Text = Convert.ToString(DateTime.Now.ToString());

            //Show Data - Hiển thị dữ liệu đã insert lên DataGridView
            string sql_Select = "Select * From Products_t";
            SqlDataAdapter da = new SqlDataAdapter(sql_Select, conn);
            DataTable dt1 = new DataTable();
            da.Fill(dt1);
            dtg_ListData_Database.DataSource = dt1;
            conn.Close();

            //Show Total records - Hiển số lượng bản ghi 

            lbl_TotalRecordsDataInserted.Text = Convert.ToString(dt1.Rows.Count);
            MessageBox.Show("Insert Successfully !");

 

Toàn bộ code C# insert nhiều dòng, dữ liệu lớn vào cơ sở dữ liệu SQL Database (C# Insert multi row Big Data to SQL Database) như sau:

Ví dụ

           

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Configuration;

namespace Insert_BigData
{
    public partial class Frm_InsertBigData : Form
    {
        public Frm_InsertBigData()
        {
            InitializeComponent();
        }
        private void btn_InsertBigData_Click(object sender, EventArgs e)
        {
            //Create data 1 million rows of products and add to Datatable
            DataTable dt_BigData = new DataTable();
            DataColumn column1 = null;
            column1 = new DataColumn("ProductID");
            dt_BigData.Columns.Add(column1);

            DataColumn column2 = null;
            column2 = new DataColumn("ProductName");
            dt_BigData.Columns.Add(column2);

            //Create Big Data 1.000.000 records of products and add to Datatbale
            for (int i = 1; i <= 1000000; i++)
            {
                DataRow d_row = dt_BigData.NewRow();
                d_row["ProductID"] = "ProductID_" + i.ToString();
                d_row["ProductName"] = "ProductName_" + i.ToString();
                dt_BigData.Rows.Add(d_row);
            }

            //Show Start time - Thời gian bắt đầu insert dữ liệu
            lbl_StartTime.Text = Convert.ToString(DateTime.Now.ToString());

            //Insert Data  1 million rows to Database SQL
            String Str_connect_DB = "data source=192.168.1.10; initial catalog=ihoclaptrinh; user id=sa; password=123456";
            SqlConnection conn = new SqlConnection(Str_connect_DB);
            conn.Open();
            for (int k = 0; k < dt_BigData.Rows.Count; k++)
            {
                SqlCommand sqlCmd = new SqlCommand("INSERT INTO Products_t(ProductID,ProductName) VALUES('" + dt_BigData.Rows[k]["ProductID"] + "','" + dt_BigData.Rows[k]["ProductName"] + "')", conn);
                sqlCmd.CommandType = CommandType.Text;
                sqlCmd.ExecuteNonQuery();
            }
            //Show End time - Thời gian kết thúc insert dư liệu
            lbl_EndTime.Text = Convert.ToString(DateTime.Now.ToString());

            //Show Data - Hiển thị dữ liệu đã insert lên DataGridView
            string sql_Select = "Select * From Products_t";
            SqlDataAdapter da = new SqlDataAdapter(sql_Select, conn);
            DataTable dt1 = new DataTable();
            da.Fill(dt1);
            dtg_ListData_Database.DataSource = dt1;
            conn.Close();

            lbl_TotalRecordsDataInserted.Text = Convert.ToString(dt1.Rows.Count);
            MessageBox.Show("Insert Successfully !");
        }

    }
}

 

- Chạy Chương trình và kiểm tra kết quả 

Thời gian insert 1 triệu sản phẩm (1 million products) vào cơ sở dữ liệu SQL Database bằng C# là khoảng 10 đến 15 phút.Với lượng thời gian này thì tốc độ insert là rất chậm so với sử dụng Insert Table vào cơ sơ dữ liệu SQL Database (thời gian insert 1 triệu dòng sản phẩm chỉ mất 10 đến 15 giây).

- Kiểm tra dữ liệu trong cơ sở dữ liệu SQL Database