封装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接口传递照片路径-->接收处理返回值-->写入数据 ...
随机推荐
- 如何使用Excel选择整列排序
在excel中,排序的时候弹窗提示“若要执行此操作,所有合并单元格需大小相同”,该怎么操作才能实现排序呢?接下来,小编就和大家分享具体操作. 工具/原料 excel 方法/步骤 打开出 ...
- App上线流程全攻略(史上最具体步骤)
@转载请保留:iOS界一迷糊小书童--->专注于iOS开发!!谢谢合作 /*****************************************1****************** ...
- mapper.xml中动态sql抽取重复项
mabatis重点是通过标签对sql灵活的组织,通过配置的方式完成输入 输出映射. 1.对mapper.xml中重复的sql抽取统一维护,以及foreach使用 UserMapperCustom.xm ...
- linux-资料汇集
1.http://www.debian.org/doc/ 2.鸟哥的私房菜 3.The Linux Command Line by William E. Shotts, Jr. 4.https://d ...
- Junit报错Initialization Error
出错原因是没有把方法声明为public
- HDU 1286 找新朋友 (欧拉公式或者标记法(其实就是欧拉公式的思想))
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1286 找新朋友 Time Limit: 2000/1000 MS (Java/Others) M ...
- C++ 内存、new与malloc分配内存区别?
一关于内存 1.内存分配方式 内存分配方式有三种: (1)从静态存储区域分配.内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在.例如全局变量,static变量. (2)在栈上创建. ...
- LightOJ 1118--Incredible Molecules(两圆相交)
1118 - Incredible Molecules PDF (English) Statistics Forum Time Limit: 0.5 second(s) Memory Lim ...
- Filebeat使用模块收集日志
1.先决条件 在运行Filebeat模块之前: 安装并配置Elastic stack 完成Filebeat的安装 检查Elasticsearch和Kibana是否正在运行,以及Elasticsearc ...
- CentOS中的 yum upgrade 和 yum update 的区别
通过 man yum 的帮助信息了解 yum update 和 yum upgrade: update If run without any packages, update will update ...