封装List集合一个批量导入数据库的工具类
public class CommonDal
{
#region 数据导入相关
/// <summary>
/// 批量导入数据
/// </summary>
/// <param name="dt">将要导入的数据源</param>
/// <param name="TbName">目标表名称</param>
public static void Bulk_ImportDatable(DataTable dt, string TargetTableName)
{
using (SqlConnection destinationConnection = DBHelper.CreateConnection())
{
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(destinationConnection))
{
try
{
bulkCopy.DestinationTableName = TargetTableName;//要插入的表的表明
for (int i = ; i < dt.Columns.Count; i++)
{
bulkCopy.ColumnMappings.Add(dt.Columns[i].ColumnName, dt.Columns[i].ColumnName);
}
bulkCopy.WriteToServer(dt);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
} }
#endregion
#region 数据表操作相关
#region 增
/// <summary>
/// 向数据表中插入一条数据
/// </summary>
/// <typeparam name="T">插入数据的参数类型,注意名称和表明保持一致</typeparam>
/// <param name="obj">插入的数据对象</param>
/// <returns></returns>
public int InsertInfo<T>(T obj) where T : class
{
using (IDbConnection conn = DBHelper.CreateConnection())
{
return conn.Insert<T>(obj);
}
}
#endregion
#region 删除
/// <summary>
/// 通过表名称truncate掉表数据
/// </summary>
/// <param name="tablename">需要清除数据的表名称</param>
/// <returns></returns>
public bool truncateTableByName(string tablename)
{
using (IDbConnection conn = DBHelper.CreateConnection())
{
string sql = " TRUNCATE TABLE " + tablename;
DynamicParameters param = new DynamicParameters();
param.Add("TableName", tablename);
return conn.Execute(sql, param) > ;
}
}
/// <summary>
/// 将主表数据清除并且清除部分关联信息表的关联数据
/// </summary>
/// <param name="truncateTableName">要清除数据的主表名称</param>
/// <param name="deleteTableName">要清除关联数据的关联信息表名称</param>
/// <param name="sqlWhereList">清除关联信息数据的Where条件</param>
public void truncateAndDeleteTable(string truncateTableName, string deleteTableName, List<SqlWhereModel> sqlWhereList)
{
truncateTableByName(truncateTableName);
deleteTableByName(deleteTableName, sqlWhereList);
} /// <summary>
/// 通过表名称和Where条件delete掉表数据
/// </summary>
/// <param name="TableName">需要清除数据的表名称</param>
/// <param name="paramModel">Where参数集合</param>
/// <returns></returns>
public bool deleteTableByName(string TableName, List<SqlWhereModel> paramModel)
{
using (IDbConnection conn = DBHelper.CreateConnection())
{
//sql语句拼接时使用StringBulider 防止长度限制
StringBuilder sql = new StringBuilder("delete from " + TableName);
StringBuilder sbwhere = new StringBuilder(" where 1=1 ");
DynamicParameters parameters = new DynamicParameters();
paramModel.ForEach(p =>
{
sbwhere.AppendLine(" and " + p.ParamName + " = @" + p.ParamValue);
parameters.Add(p.ParamValue);
}); return conn.Execute(sql.AppendLine(sbwhere.ToString()).ToString(), parameters) > ;
}
}
/// <summary>
/// 通过表名称delete掉表数据
/// </summary>
/// <param name="TableName">需要清除数据的表名称</param>
/// <returns></returns>
public bool deleteTableByName(string TableName)
{
using (IDbConnection conn = DBHelper.CreateConnection())
{
//sql语句拼接时使用StringBulider 防止长度限制
StringBuilder sql = new StringBuilder(@"delete from " + TableName);
return conn.Execute(sql.ToString()) > ;
}
}
#endregion
#region 修改 #endregion
#region 查询
/// <summary>
/// 通过id判断是否存在记录
/// </summary>
/// <param name="dc">传入id</param>
/// <returns>返回泛型对象</returns>
public T getExistsById<T>(long id) where T : class
{
using (IDbConnection coon = DBHelper.CreateConnection())
{
return coon.Get<T>(id);
}
}
/// <summary>
/// 通过name查询是否存在
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="Name"></param>
/// <returns></returns>
public T getExistsByName<T>(string Name) where T : dtModelBase
{
using (IDbConnection coon = DBHelper.CreateConnection())
{ var predicate = Predicates.Field<T>(f => f.Name, Operator.Eq, Name);
IEnumerable<T> list = coon.GetList<T>(predicate);
return list.FirstOrDefault();
}
}
/// <summary>
/// 通过标准名Ename查询是否存在
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="Name"></param>
/// <returns></returns>
public T getExistsByEName<T>(string EName, string Tbname) where T : class
{
using (IDbConnection coon = DBHelper.CreateConnection())
{
string sql = "select * from " + Tbname + " where EName =@EName";
IEnumerable<T> list = coon.Query<T>(sql, new { EName });
return list.FirstOrDefault();
}
}
/// <summary>
/// 读取数据源
/// </summary>
/// <returns></returns>
public List<T> GetSourceDt<T>() where T : class
{
IEnumerable<T> list = null;
using (IDbConnection conn = DBHelper.CreateConnection())
{
list = conn.GetList<T>().ToList();
}
return list.ToList();
}
#endregion
#endregion
}
public class SqlWhereModel
{
public string ParamName { get; set; }
public string ParamValue { get; set; }
}
结合上一篇List和DataTable相互转换的类直接 进行数据库批量插入操作调用示例
DataTable dt = ListTranDataTableHelper.ToDataTable(listv, DatableProperty.PropertyRenameDic);
CommonDal.Bulk_ImportDatable(dt, targetTableName);
封装List集合一个批量导入数据库的工具类的更多相关文章
- Java实现Excel数据批量导入数据库
Java实现Excel数据批量导入数据库 概述: 这个小工具类是工作中的一个小插曲哦,因为提数的时候需要跨数据库导数... 有的是需要从oracle导入mysql ,有的是从mysql导入oracle ...
- 将Excle中的数据批量导入数据库
namespace 将Excle中的数据批量导入数据库{ class Program { static void Main(string[] args) { S ...
- 基于Dapper二次封装了一个易用的ORM工具类:SqlDapperUtil
基于Dapper二次封装了一个易用的ORM工具类:SqlDapperUtil,把日常能用到的各种CRUD都进行了简化封装,让普通程序员只需关注业务即可,因为非常简单,故直接贴源代码,大家若需使用可以直 ...
- 自己整理的一个访问SQLite3数据库的C++类
原文地址:自己整理的一个访问SQLite3数据库的C++类作者:vigra 近日,对SQLite3的使用进行了研究.真不愧是优秀的嵌入数据库,API接口也极其简捷.基本上只要使用以下几个接口就能完成数 ...
- 导入导出Excel工具类ExcelUtil
前言 前段时间做的分布式集成平台项目中,许多模块都用到了导入导出Excel的功能,于是决定封装一个ExcelUtil类,专门用来处理Excel的导入和导出 本项目的持久化层用的是JPA(底层用hibe ...
- Java精选笔记_集合概述(Collection接口、Collections工具类、Arrays工具类)
集合概述 集合有时又称为容器,简单地说,它是一个对象,能将具有相同性质的多个元素汇聚成一个整体.集合被用于存储.获取.操纵和传输聚合的数据. 使用集合的技巧 看到Array就是数组结构,有角标,查询速 ...
- 实现一个简单的http请求工具类
OC自带的http请求用起来不直观,asihttprequest库又太大了,依赖也多,下面实现一个简单的http请求工具类 四个文件源码大致如下,还有优化空间 MYHttpRequest.h(类定义, ...
- 将execl里的数据批量导入数据库
本文将采用NPOI插件来读取execl文件里的数据,将数据加载到内存中的DataTable中 /// <summary> /// 将Excel转换为DataTable /// </s ...
- C#使用Parallel处理数据同步写入Datatable并使用BulkInsert批量导入数据库
项目需要,几十万张照片需要计算出每个照片的特征值(调用C++编写的DLL). 业务流程:选择照片文件夹,分别访问照片-->调用DLL接口传递照片路径-->接收处理返回值-->写入数据 ...
随机推荐
- swagger使用二:swagger配置多个项目注释
在项目中采用swagger测试接口,提供接口给其他人员都非常的方便. 在swagger默认配置中,默认只显示接口访问层中的注释,可是很多的参数说明都已经在实体层中了啊?(如下图)不可能再把实体层中的模 ...
- 【转】Impala安装json解析udf插件
背景 Impala跟Hive一样,是常用的数据仓库组件之一.熟悉Hive的同学肯定知道,Hive官方提供了get_json_object函数用于处理json字符串,但是Impala官方并没有提供类似的 ...
- 【DP】:CF #319 (Div. 2) B. Modulo Sum
[题目链接]:http://codeforces.com/contest/577/problem/B [相似题目]:http://swjtuoj.cn/problem/2383/ [题意]:给出n个数 ...
- ThinkPHP中前台输出变量
1. foreach <foreach name="list" item="vo" > {$key}|{$vo.id}:{$vo.name} & ...
- 11、SpringBoot-CRUD-thymeleaf公共页面元素抽取
thymeleaf公共页面元素抽取 存在一种现象:两个文件的代码只有一部分代码不一样 其余的均相同,此时就可以提取公共的代码去简化开发 .抽取公共片段 <div th:fragment=&quo ...
- checkout 提示失败
事故现场有些时候,当我们使用 git checkout <branchname>命令切换分支的时候,有时会切换失败,然后出现以下的提示信息: 提示信息说的很清楚,当前分支有未跟踪的文件,c ...
- CssSelector之selenium元素定位
CssSelector是我最喜欢的元素定位方法,Selenium官网的Document里极力推荐使用CSS locator,而不是XPath来定位元素,原因是CSS locator比XPath loc ...
- ORA-04044: 此处不允许过程, 函数, 程序包或类型和
用Orale代码建表时,出现 SQL> comment on column SCORE.cno 2 is '学号(外键)';comment on column SCORE.cno is '学号( ...
- mdev自动创建和删除设备节点
设备节点的创建有二种方法: 1)手动创建:mknode命令 当insmod后,还需要手动moknod创建设备节点才能被应用层打开,并且使用完成之后还要删除节点. 2) 自动创建:mdev mdev, ...
- maven中的坐标和仓库
1.坐标 pom.xml中的groupId.artifactId和version都可以构成项目的坐标. <dependency> <groupId></groupI ...