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.
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.
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 Products_t (table) trong cơ sở dữ liệu ihoclaptrinh (Database)
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
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:
//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);
}
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:
//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 !");
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 !");
}
}
}
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