Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Cập nhật hàng loạt trong C #

Những gì tôi đã làm trước đây là thực hiện chèn hàng loạt từ dữ liệu vào bảng tạm thời, sau đó sử dụng lệnh hoặc thủ tục được lưu trữ để cập nhật dữ liệu liên quan bảng tạm thời với bảng đích. Bảng tạm thời là một bước bổ sung, nhưng bạn có thể tăng hiệu suất với chèn hàng loạt và cập nhật hàng loạt nếu số lượng hàng lớn, so với việc cập nhật dữ liệu từng hàng.

Ví dụ:

public static void UpdateData<T>(List<T> list,string TableName)
{
    DataTable dt = new DataTable("MyTable");
    dt = ConvertToDataTable(list);

    using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["SchoolSoulDataEntitiesForReport"].ConnectionString))
    {
        using (SqlCommand command = new SqlCommand("", conn))
        {
            try
            {
                conn.Open();

                //Creating temp table on database
                command.CommandText = "CREATE TABLE #TmpTable(...)";
                command.ExecuteNonQuery();

                //Bulk insert into temp table
                using (SqlBulkCopy bulkcopy = new SqlBulkCopy(conn))
                {
                    bulkcopy.BulkCopyTimeout = 660;
                    bulkcopy.DestinationTableName = "#TmpTable";
                    bulkcopy.WriteToServer(dt);
                    bulkcopy.Close();
                }

                // Updating destination table, and dropping temp table
                command.CommandTimeout = 300;
                command.CommandText = "UPDATE T SET ... FROM " + TableName + " T INNER JOIN #TmpTable Temp ON ...; DROP TABLE #TmpTable;";
                command.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                // Handle exception properly
            }
            finally
            {
                conn.Close();
            }
        }
    }
}

Lưu ý rằng một kết nối duy nhất được sử dụng để thực hiện toàn bộ hoạt động, để có thể sử dụng bảng tạm trong mỗi bước, vì phạm vi của bảng tạm là mỗi kết nối.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Các hàm toán học của SQL Server (Danh sách đầy đủ)

  2. Làm thế nào để nâng cấp DataFrame của gấu trúc vào bảng Microsoft SQL Server?

  3. Làm cách nào để tạo người dùng trong cơ sở dữ liệu SQL Server Express mà tôi đã thêm vào dự án của mình?

  4. Các tùy chọn giám sát cơ sở dữ liệu hàng đầu có sẵn cho doanh nghiệp của bạn

  5. Bắt Hibernate và SQL Server để chơi tốt với VARCHAR và NVARCHAR