栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

用C#批量更新

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

用C#批量更新

我之前所做的是将数据从大容量插入临时表中,然后使用命令或存储过程更新与临时表和目标表相关的数据。临时表是一个额外的步骤,但是与逐行更新数据相比,如果行数很大,则批量插入和大规模更新可以提高性能。

例:

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(); }        }    }}

请注意,由于临时表的范围是针对每个连接的,因此单个连接用于执行整个操作,以便能够在每个步骤中使用临时表。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/385819.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号