C# 采用事务批量插入数据
首先要构建一个实体类,注意实体类的属性和数据的列要一一对应,否则会报错。
public class Animal
{
public string Name { get; set; }
public int Age { get; set; }
public int Weight { get; set; }
public string Color { get; set; } }
根据实体类获取要插入的表结构
public static string GetProperty<T>(T t)
{
string str=String.Empty;
StringBuilder sb = new StringBuilder();
if (t == null)
{
return str;
}
System.Reflection.PropertyInfo[] properties = t.GetType().GetProperties();
if (properties.Length <= )
{
return str;
}
foreach (System.Reflection.PropertyInfo info in properties)
{
sb.Append(string.Format("@{0},", info.Name));
}
sb.Remove(sb.Length-,);
return sb.ToString();
}
数据插入的方法:
public int InsertBatch<T>(IEnumerable<T> entities)
{
Type t = typeof(T);
string sql = "insert into " + t.Name + " values ("+ClassHelper.GetProperty(entities.FirstOrDefault())+")";
using (System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection(ConnectionString))
{
conn.Open();
int records = ;
using (var trans = conn.BeginTransaction())
{
try
{
records = conn.Execute(sql, entities, trans, , CommandType.Text);
}
catch (DataException ex)
{
trans.Rollback();
throw ex;
}
trans.Commit();
}
return records;
}
}
C# 采用事务批量插入数据的更多相关文章
- 使用事务和SqlBulkCopy批量插入数据
		
SqlBulkCopy是.NET Framework 2.0新增的类,位于命名空间System.Data.SqlClient下,主要提供把其他数据源的数据有效批量的加载到SQL Server表中的功能 ...
 - C#批量插入数据到Sqlserver中的四种方式
		
我的新书ASP.NET MVC企业级实战预计明年2月份出版,感谢大家关注! 本篇,我将来讲解一下在Sqlserver中批量插入数据. 先创建一个用来测试的数据库和表,为了让插入数据更快,表中主键采用的 ...
 - 批量插入数据(基于Mybatis的实现-Oracle)
		
前言:做一个数据同步项目,要求:同步数据不丢失的情况下,提高插入性能. 项目DB框架:Mybatis.DataBase:Oracle. -------------------------------- ...
 - C#_批量插入数据到Sqlserver中的四种方式
		
先创建一个用来测试的数据库和表,为了让插入数据更快,表中主键采用的是GUID,表中没有创建任何索引.GUID必然是比自增长要快的,因为你生成一个GUID算法所花的时间肯定比你从数据表中重新查询上一条记 ...
 - C# 之 批量插入数据到 SQLServer 中
		
创建一个用来测试的数据库和表,为了让插入数据更快,表中主键采用的是GUID,表中没有创建任何索引.GUID必然是比自增长要快.而如果存在索引的情况下,每次插入记录都会进行索引重建,这是非常耗性能的.如 ...
 - C#批量插入数据到Sqlserver中的四种方式 - 转
		
先创建一个用来测试的数据库和表,为了让插入数据更快,表中主键采用的是GUID,表中没有创建任何索引.GUID必然是比自增长要快的,因为你生成一个GUID算法所花的时间肯定比你从数据表中重新查询上一条记 ...
 - FreeSql (六)批量插入数据
		
var connstr = "Data Source=127.0.0.1;Port=3306;User ID=root;Password=root;" + "Initia ...
 - SQL Server 批量插入数据方案 SqlBulkCopy 的简单封装,让批量插入更方便
		
一.Sql Server插入方案介绍 关于 SqlServer 批量插入的方式,有三种比较常用的插入方式,Insert.BatchInsert.SqlBulkCopy,下面我们对比以下三种方案的速度 ...
 - .Net批量插入数据到SQLServer数据库,System.Data.SqlClient.SqlBulkCopy类批量插入大数据到数据库
		
批量的的数据导入数据库中,尽量少的访问数据库,高性能的对数据库进行存储. 采用SqlBulkCopy来处理存储数据.SqlBulkCopy存储大批量的数据非常的高效,将内存中的数据表直接的一次性的存储 ...
 
随机推荐
- VMware10.06精简版安装后台运行
			
VMware10.06精简版安装时会出现一个安装功能选择菜单,里面有一条后台运行必选功能,一般人会跳过条.当你打算在服务器上用vmware时,一定要安装后台运行服务,否则你无法换出正在运行的后台虚拟机 ...
 - NLog学习
			
一.什么是NLog? NLog((http://www.nlog-project.org)是一个基于.NET平台编写的类库,我们可以使用NLog在应用程序中添加极为完善的跟踪调试代码. NLog允许我 ...
 - 黄聪:远程连接mysql数据库注意事项记录(远程连接慢skip-name-resolve)
			
远程连接慢 慢是一个很大的问题,网上的办法是在my.ini的“[mysqld]”下面加入一行“skip-name-resolve”,就像这样: 然后保存并重启mysql服务即可. 下面是其它网友的补充 ...
 - 清除系统日志及数据库(sql server)日志最佳实践
			
在一个项目中遇到的问题:系统日志过大,后来用delete语句删除了(相当的慢),结果数据库日志又变成很大了(差不多10G),所以又得把数据库日志删除. 方法: --备份系统中的部份日志--SELECT ...
 - 树莓派开启root用户
			
树莓派系统使用的linux是debian系统,所以树莓派启用root和debian是相同的. debian里root账户默认没有密码,但账户锁定. 当需要root权限时,由默认账户经由sudo执行,R ...
 - mysql临时表的产生
			
sql执行会生成一个巨大的临时表,当内存放不下时,要全部copy 到磁盘,导致IO飙升,时间开销增大. 额外收获知识收藏如下: 临时表存储 MySQL临时表分为"内存临时表"和&q ...
 - Android高手速成
			
第一部分 个性化控件(View) http://www.cnblogs.com/huwei0814/p/3796659.html 第二部分 工具库 http://www.cnblogs.c ...
 - css全局样式
			
@charset"utf-8"; *{margin:0;padding:0;} //去默认内外边距的简易写法 body,div,dl,dt,dd,ul,ol,li,h1,h2, ...
 - Stanford CS1 Compilers PA2J notes
			
[题记·碎碎念] 斯坦福这门Compilers原本放在Coursera上,当年错过档期很是可惜,后来发现他们自己的MOOC站放了一个self paced版本,真是普大喜奔,趁着放假有空学学. 这门课的 ...
 - 转来的emacs配置文件,自动安装插件
			
网上转来的emacs配置文件,便于自动安装插件,收藏起来 http://www.gogae.org/post-7/ EMACS是一个伪装成代码编辑器的操作系统. EMACS是一个非常强大的代码编辑器, ...