封装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接口传递照片路径-->接收处理返回值-->写入数据 ...
随机推荐
- BZOJ5299:[CQOI2018]解锁屏幕(状压DP)
Description 使用过Android手机的同学一定对手势解锁屏幕不陌生.Android的解锁屏幕由3x3个点组成,手指在屏幕上画一条 线将其中一些点连接起来,即可构成一个解锁图案.如下面三个例 ...
- 20145223 杨梦云 《网络对抗》 Web基础
20145223 杨梦云 <网络对抗> Web基础 1.实验后回答问题 (1)什么是表单 表单在网页中主要负责数据采集功能.一个表单有三个基本组成部分:(1) 表单标签:这里面包含了处理表 ...
- ASP.NET Web API编程——文件上传
首先分别介绍正确的做法和错误的做法,然后分析他们的不同和错误之处,以便读者在实现此功能时可避开误区 1正确的做法 public class AvaterController : BaseApiCont ...
- jenkins没安装git报错
Jenkins新建项目中源码管理使用Git时遇到如下问题: 在安装jenkins服务器上查看一下git版本,可能没有安装git 也可能是git版本太低 [root@localhost nnnnn]# ...
- C#处理List<object>重复数据的问题
private class ListDistinct : IEqualityComparer<object> { public bool Equals(object x, object y ...
- ICT测试点是干什么的, 怎么设置!
简单理解:ICT类似如万用表,只是把表笔换成了测试针.那么问题就简单了,一颗普通的RLC元件,都必须有两个测试点才能够测试,当然同一个网络共用的节点用一个测试点就可以了. 详细描述: PCB设计时要看 ...
- LwIP协议栈开发嵌入式网络的三种方法分析
LwIP协议栈开发嵌入式网络的三种方法分析 摘要 轻量级的TCP/IP协议栈LwIP,提供了三种应用程序设计方法,且很容易被移植到多任务的操作系统中.本文结合μC/OS-II这一实时操作系统,以 ...
- JQuery手写一个简单的轮播图
做出来的样式: 没有切图,就随便找了一些图片来实现效果,那几个小星星萌不萌. 这个轮播图最主要的部分是animate(),可以先熟悉下这个方法. 代码我放到了github上,链接:https://gi ...
- Reading Notes : 180212 冯诺依曼计算机
读书<计算机组成原理>,百度百科 现在大部分接触过计算机的人,都会知道冯诺依曼计算机,但是这个概念是怎么来的呢?本节我们就通过聊一下计算机的存储程序控制,来认识”冯诺依曼”. 存储程序控制 ...
- Oracle记录类型(record)和%rowtype
Oracle中的记录类型(record)和使用%rowtype定义的数据类型都是一种单行多列的数据结构,可以理解为一个具有多个属性的对象.其中属性名即为列名. 记录类型(record) 记录类型是一种 ...