c#批量插入数据到数据库【支持事务操作】
2008-06-26 22:56
302 查看
#region 批量插入数据到数据库
DateTime startTime;
private bool SqlBulkCopy(DataTable dt)
{
try
{
startTime = DateTime.Now;
//数据批量导入sqlserver,创建实例 SqlBulkCopyOptions.UseInternalTransaction采用事务 复制失败自动回滚
System.Data.SqlClient.SqlBulkCopy sqlbulk = new System.Data.SqlClient.SqlBulkCopy(System.Configuration.ConfigurationSettings.AppSettings["ConStr"], SqlBulkCopyOptions.UseInternalTransaction);
sqlbulk.SqlRowsCopied +=
new SqlRowsCopiedEventHandler(OnRowsCopied); //订阅复制完成后的方法,参数是 sqlbulk.NotifyAfter的值
sqlbulk.NotifyAfter = dt.Rows.Count;
//目标数据库表名
sqlbulk.DestinationTableName = "T_TempUpLoadTC";
//数据集字段索引与数据库字段索引映射
sqlbulk.ColumnMappings.Add(0, "userName");
sqlbulk.ColumnMappings.Add(1, "JiFenCount");
//导入
sqlbulk.WriteToServer(dt);
sqlbulk.Close();
return true;
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
finally
{
dt.Dispose();
}
}
//复制完成后的处理事件
private void OnRowsCopied(object sender, SqlRowsCopiedEventArgs args)
{
lblCounter.Text += args.RowsCopied.ToString() + " 条记录已导入";
TimeSpan copyTime = DateTime.Now - startTime;
lblCounter.Text += " 花费时间:" + copyTime.Seconds.ToString() + "." +
copyTime.Milliseconds.ToString() + " 秒";
}
#endregion
DateTime startTime;
private bool SqlBulkCopy(DataTable dt)
{
try
{
startTime = DateTime.Now;
//数据批量导入sqlserver,创建实例 SqlBulkCopyOptions.UseInternalTransaction采用事务 复制失败自动回滚
System.Data.SqlClient.SqlBulkCopy sqlbulk = new System.Data.SqlClient.SqlBulkCopy(System.Configuration.ConfigurationSettings.AppSettings["ConStr"], SqlBulkCopyOptions.UseInternalTransaction);
sqlbulk.SqlRowsCopied +=
new SqlRowsCopiedEventHandler(OnRowsCopied); //订阅复制完成后的方法,参数是 sqlbulk.NotifyAfter的值
sqlbulk.NotifyAfter = dt.Rows.Count;
//目标数据库表名
sqlbulk.DestinationTableName = "T_TempUpLoadTC";
//数据集字段索引与数据库字段索引映射
sqlbulk.ColumnMappings.Add(0, "userName");
sqlbulk.ColumnMappings.Add(1, "JiFenCount");
//导入
sqlbulk.WriteToServer(dt);
sqlbulk.Close();
return true;
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
finally
{
dt.Dispose();
}
}
//复制完成后的处理事件
private void OnRowsCopied(object sender, SqlRowsCopiedEventArgs args)
{
lblCounter.Text += args.RowsCopied.ToString() + " 条记录已导入";
TimeSpan copyTime = DateTime.Now - startTime;
lblCounter.Text += " 花费时间:" + copyTime.Seconds.ToString() + "." +
copyTime.Milliseconds.ToString() + " 秒";
}
#endregion
相关文章推荐
- c#批量插入数据到数据库【支持事务操作】
- Mysql对空间数据库的支持及使用Hibernate Spatial对空间数据的持久化操作
- Mybatis获取刚刚插入的一条数据的主键值(插入时主键未制定数据库支持主键自增)
- 简单的jdbc操作数据库例子,高效率插入数据
- c# 数据库访问静态类 支持多条SQL语句事务操作
- php使用PDO事务配合表格读取大量数据插入操作实现方法
- 精通数据库SQL——数据插入操作
- 启用事务操作,解决批量插入或更新sqlite,mssql等数据库耗时问题 分类: .NET 2015-06-18 14:39 31人阅读 评论(0) 收藏
- 闲暇时间自己写的DB类,支持MDB,SQLITE,SQLSERVER,支持查询、事务,对象直接插入和更新操作等!(10.2更新)
- C#如何操作Oracle并向数据库插入数据
- C# 通过事务向数据库插入多条数据(通过Hashtable存储数据)
- 在代码中,插入数据到数据库时,如果不使用事务,将会导致速度极慢
- Linux--C语言操作数据库(一)插入数据
- 代码提示插入成功,数据库没有数据,事务异常问题
- yii 添加,操作成功,但数据并没有插入到数据库中
- 使用事务操作SQLite数据批量插入
- iOS的sqlite3大量数据插入数据库操作
- JDBC操作Vertica数据库,用PreparedStatements对象实现批量插入数据
- 启用事务操作,解决批量插入或更新sqlite,mssql等数据库耗时问题