SqlBulkCopy—将数据表一次性复制到指定的数据表中
来源:互联网 发布:剑雨江湖灵羽进阶数据 编辑:程序博客网 时间:2024/06/01 08:01
需求点
将一个List对象,批量(一次性)插入数据库中。
思路:
1 将List<T>转换为对应的DataTable
1.1 生成表结构
1.2 插入数据到表中
2 将DataTable批量插入库中。
操作:
1.1 生成表结构及插入数据
/// <summary>
/// 将对象List转换为DataTable
/// </summary>
/// <param name="operatorLogList">操作日志列表</param>
/// <returns>DataTable</returns>
private static DataTable ListToDataTable(List<OperatorLogInfo> operatorLogList)
{
DataTable table = new DataTable();
if (null == operatorLogList || operatorLogList.Count == 0)
{
return null;
}
// 生成表结构
table.Columns.Add("code", typeof(Int32));
table.Columns.Add("create_time", typeof(DateTime));
table.Columns.Add("plan_code", typeof(Int32));
table.Columns.Add("operation_description", typeof(String));
table.Columns.Add("operation_type", typeof(Int32));
table.Columns.Add("task_code", typeof(Int32));
table.Columns.Add("task_assembly", typeof(String));
table.Columns.Add("task_param", typeof(String));
// 插入数据
foreach (OperatorLogInfo operatorLogInfo in operatorLogList)
{
DataRow row = table.NewRow();
row["code"] = operatorLogInfo.Code;
row["create_time"] = operatorLogInfo.CreateTime;
row["plan_code"] = operatorLogInfo.PlanId;
row["operation_description"] = operatorLogInfo.OperationDescription;
row["operation_type"] = (int)operatorLogInfo.OperatorType;
row["task_code"] = operatorLogInfo.TaskId;
row["task_assembly"] = operatorLogInfo.TaskAssembly;
row["task_param"] = operatorLogInfo.TaskParamAssembly;
table.Rows.Add(row);
}
return table;
}
2将DataTable批量插入库中。
/// <summary>
/// 批量写入操作日志
/// </summary>
/// <param name="operatorLogList">操作日志列表</param>
/// <returns>是否成功</returns>
public static bool InsertOperatorLogList(List<OperatorLogInfo> operatorLogList)
{
IDataHelper dbo = DataHelperFactory.Create(ConnectKey);
bool result = false;
// 生成表数据
DataTable table = ListToDataTable(operatorLogList);
if (null == table)
{
return result;
}
using (SqlConnection conn = (SqlConnection)dbo.CreateConnection)
{
conn.Open();
SqlTransaction tran = conn.BeginTransaction();
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(conn, SqlBulkCopyOptions.CheckConstraints | SqlBulkCopyOptions.KeepIdentity, tran))
{
try
{
// 涉及表名
bulkCopy.DestinationTableName = "pds_operation_log";
bulkCopy.WriteToServer(table);
tran.Commit();
result = true;
}
catch
{
tran.Rollback();
result = false;
}
}
}
- SqlBulkCopy—将数据表一次性复制到指定的数据表中
- 将旧的数据表存放到新的数据表中
- 把一个数据表的特定内容复制到另一个数据表
- 将文本文件导入到Excel数据表中
- 将csv导入到mysql数据表中
- (小笔记)()Oracle 批量复制一个数据表的数据,修改部分字段后追加加入到数据表中
- MSSQL数据表指定字段复制方法
- sql 中如何将A表的数据更新到B表中,数据表备份语句
- 从一个数据表复制数据到另一个数据表
- 将SQL Server数据表导出到Excel中
- 将txt中的数据存到Sql数据表中
- MySQL将查询结果插入到数据表中
- MySQL将查询结果插入到数据表中
- 将mysql中的数据表导入到hdfs中
- MySQL将查询结果插入到数据表中
- 使用PHP将Mysql数据表导出到Excel中
- MySQL将查询结果插入到数据表中
- MySQL将查询结果插入到数据表中
- Android 音频源码目录
- 利润中心科目余额表
- 3G入门之第一课 无线技术相关术语解释
- android音频架构
- 【免费】TUP第六期:Android平台支付与广告盈利模式
- SqlBulkCopy—将数据表一次性复制到指定的数据表中
- 3G入门之第二课 3G与光通信
- 我奋斗了18年,不是为了和你一起喝咖啡
- Java开发:Tomcat和MySQL数据库连接池配置
- 3G入门之第三课 3G、WLAN、Bluetooth三者关系之分析
- 搜索二叉树(Binary Tree)java实现
- 设置任何控件透明度
- MIME协议
- C++ 数组越界读数据会造成数据的丢失不?