SQL Server批量插入批量更新工具类

思路:

批量插入,使用SqlBulkCopy

批量更新,定义临时表,使用SqlBulkCopy批量插入临时表,用SQL语句更新临时表数据到实际表

定义:

/// <summary>
        /// 批量插入
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="lst"></param>
        /// <param name="tableName">数据库表名,不传表示取泛型T的类型名称</param>
        /// <param name="columnNames">字段名数组,不传表示取泛型T的所有属性名称</param>
        /// <returns></returns>
        public bool SqlBulkCopy<T>(IList<T> lst, string tableName = "", string[] columnNames = null) {}
/// <summary>
        /// 批量插入
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="lst"></param>
        /// <param name="tableName">数据库表名,空或null表示取泛型T的类型名称</param>
        /// <param name="columnList">字段映射字典</param>
        /// <returns></returns>
        public bool SqlBulkCopy<T>(IList<T> lst, string tableName, Dictionary<string, string> columnList) {}
/// <summary>
        /// 批量更新
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="lst"></param>
        /// <param name="tableName">临时表名</param>
        /// <param name="fieldStr">临时表字段定义</param>
        /// <param name="updateStr">UPDATE SQL语句</param>
        /// <param name="columnNames">临时表批量插入字段名数组,不传表示取泛型T的所有属性名称</param>
        /// <returns></returns>
        public bool BatchUpdate<T>(IList<T> lst, string tableName, string fieldStr, string updateStr, string[] columnNames = null) {}

调用

DbHelper dbHelper = new DbHelper("链接字符串");

            dbHelper.SqlBulkCopy(lst);

            dbHelper.SqlBulkCopy(lst, "DbModelName");

            dbHelper.SqlBulkCopy(lst, "DbModelName", new string[] { "Name", "Contact" });

            Dictionary<string, string> columnList = new Dictionary<string, string>();
            columnList.Add("ID", "id");
            columnList.Add("Name", "name");
            columnList.Add("Contact", "contact");
            dbHelper.SqlBulkCopy(lst, "DbModelName", columnList);

            dbHelper.BatchUpdate(lst, "#tmp", "ID int,Contact varchar(100)"
                    , "UPDATE a SET a.contact=b.Contact FROM DbModelName a INNER JOIN #tmp b ON a.id=b.ID WHERE b.ID IS NOT NULL");

源码下载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

stdl

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值