gpt4 book ai didi

sql server中批量插入与更新两种解决方案分享(asp.net)

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 37 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章sql server中批量插入与更新两种解决方案分享(asp.net)由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

若只是需要大批量插入数据使用bcp是最好的,若同时需要插入、删除、更新建议使用SqlDataAdapter我测试过有很高的效率,一般情况下这两种就满足需求了  bcp方式  。

复制代码代码如下

/// <summary>  /// 大批量插入数据(2000每批次)  /// 已采用整体事物控制  /// </summary>  /// <param name="connString">数据库链接字符串</param>  /// <param name="tableName">数据库服务器上目标表名</param>  /// <param name="dt">含有和目标数据库表结构完全一致(所包含的字段名完全一致即可)的DataTable</param>  public static void BulkCopy(string connString, string tableName, DataTable dt)  {  using (SqlConnection conn = new SqlConnection(connString))  {  conn.Open();  using (SqlTransaction transaction = conn.BeginTransaction())  {  using (SqlBulkCopy bulkCopy = new SqlBulkCopy(conn, SqlBulkCopyOptions.Default, transaction))  {  bulkCopy.BatchSize = 2000;  bulkCopy.BulkCopyTimeout = _CommandTimeOut;  bulkCopy.DestinationTableName = tableName;  try  {  foreach (DataColumn col in dt.Columns)  {  bulkCopy.ColumnMappings.Add(col.ColumnName, col.ColumnName);  }  bulkCopy.WriteToServer(dt);  transaction.Commit();  }  catch (Exception ex)  {  transaction.Rollback();  throw ex;  }  finally  {  conn.Close();  }  }  }  }  }  。

SqlDataAdapter  。

复制代码代码如下

/// <summary>  /// 批量更新数据(每批次5000)  /// </summary>  /// <param name="connString">数据库链接字符串</param>  /// <param name="table"></param>  public static void Update(string connString, DataTable table)  {  SqlConnection conn = new SqlConnection(connString);  SqlCommand comm = conn.CreateCommand();  comm.CommandTimeout = _CommandTimeOut;  comm.CommandType = CommandType.Text;  SqlDataAdapter adapter = new SqlDataAdapter(comm);  SqlCommandBuilder commandBulider = new SqlCommandBuilder(adapter);  commandBulider.ConflictOption = ConflictOption.OverwriteChanges;  try  {  conn.Open();  //设置批量更新的每次处理条数  adapter.UpdateBatchSize = 5000;  adapter.SelectCommand.Transaction = conn.BeginTransaction();/////////////////开始事务  if (table.ExtendedProperties["SQL"] != null)  {  adapter.SelectCommand.CommandText = table.ExtendedProperties["SQL"].ToString();  }  adapter.Update(table);  adapter.SelectCommand.Transaction.Commit();/////提交事务  }  catch (Exception ex)  {  if (adapter.SelectCommand != null && adapter.SelectCommand.Transaction != null)  {  adapter.SelectCommand.Transaction.Rollback();  }  throw ex;  }  finally  {  conn.Close();  conn.Dispose();  }  }  。

最后此篇关于sql server中批量插入与更新两种解决方案分享(asp.net)的文章就讲到这里了,如果你想了解更多关于sql server中批量插入与更新两种解决方案分享(asp.net)的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com