封装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接口传递照片路径-->接收处理返回值-->写入数据 ...
随机推荐
- sqlserver 2008 r2 直接下载地址,可用迅雷下载
转自 http://www.cnblogs.com/chinafine/archive/2010/12/23/1915312.html sqlserver 2008 r2 直接下载地址,可用迅雷下载 ...
- ADF中VO的查询方法比较
getRowCount(),getQueryHitCount(oracle.jbo.server.ViewRowSetImpl),getEstimatedRangePageCount,getCappe ...
- 汇编试验一:查看CPU和内存,用机器码指令和汇编指令编程
预备知识: r命令查看,改变CPU寄存器的内容 2.D命令查看内存 3.E命令改写内存 两种方式: 1: 2: 内存中写入机器码 用T命令执行机器码(先将CS:IP指向要执行的内存处) 用a命令写汇编 ...
- luogu P1522 Cow Tours
嘟嘟嘟 题面挺绕的,“翻译”一下: 1.牧区是一个点,牧场是所有直接相连的点构成的联通块. 2.两个牧区之间的距离是这两个距离之间的最短路,只有直接相连的两个牧区之间的距离是欧几里得距离. 3.牧场的 ...
- 【转】XZip and XUnzip - Add zip and/or unzip to your app with no extra .lib or .dll
原文:http://www.codeproject.com/Articles/4135/XZip-and-XUnzip-Add-zip-and-or-unzip-to-your-app-w Downl ...
- 开源项目之防火墙 tdifw
tdifw是windows防火墙软件(TDI层驱动过滤),负责监控网络监听与连接.以及过滤信息. 源码在src目录, 程序在Bin目录,执行根目录下的批处理文件也可以,具体步骤如下: 1. 运行ins ...
- star组件
一.star组件 <template> <div class="star" :class="starType"> <span v- ...
- M4修改外部晶振8M和25M晶振的方法
共计修改三个参数: 1.HSE_VALUE 具体位置在stm32f4xx.h中 2.PLL_M 具体位置在system_stm32f4xx.c中 3.Keil编译器 工程的Opt ...
- AltiumDesigner16笔记
集成库(*.intlib)没有办法直接修改库文件,但是*.schlib可以编辑的. 原理图元件批量修改可以从Tools-> Update from libraries进行. PCB封装批量修改: ...
- oracle 优化相关
--选择最有效率的表名顺序: Oracle的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理, 在FROM子句中包含多 ...