
存储过程配合UpdateDaset方法批量插入Dataset数据实现代码

public bool SaveSMSMessage(SMSBatch smsBatch, DataSet smsMessages)
{
//using (TransactionScope ts = new TransactionScope(TransactionScopeOption.Suppress))
//{
foreach (DataRow row in smsMessages.Tables[0].Rows)
row.SetModified();
SqlDatabase db = new SqlDatabase(this.ConsultantsConnString);
string sqlCmd = "EXEC cn.SMSSaveSMSMessage @SMSBatchID, @SMSTypeID, @SubsidiaryID, @ContactID, @Message, @PhoneNumber";
using (SqlCommand cmd = db.GetSqlStringCommand(sqlCmd) as SqlCommand)
{
cmd.CommandTimeout = 600;
cmd.Parameters.AddWithValue("@SMSBatchID", smsBatch.SMSBatchID);
cmd.Parameters.AddWithValue("@SMSTypeID", smsBatch.SMSType.SMSTypeID);
cmd.Parameters.AddWithValue("@SubsidiaryID", smsBatch.SMSType.SubsidiaryID);
db.AddInParameter(cmd, "@ContactID", DbType.Int64, "ContactID", DataRowVersion.Current);
db.AddInParameter(cmd, "@Message", DbType.String, "Message", DataRowVersion.Current);
if (smsMessages.Tables[0].Columns.Contains("PhoneNumber"))
{
db.AddInParameter(cmd, "@PhoneNumber", DbType.String, "PhoneNumber", DataRowVersion.Current);
}
else
{
db.AddInParameter(cmd, "@PhoneNumber", DbType.String, DBNull.Value);
}
int rowsEffected = db.UpdateDataSet(smsMessages, "SMSMessage", null, cmd, null, UpdateBehavior.Transactional);
sqlCmd = rowsEffected.ToString();
}
// ts.Complete();
//}
return true;
}
相关推荐
-
sql server中批量插入与更新两种解决方案分享(存储过程)
1.游标方式 复制代码 代码如下: DECLARE @Data NVARCHAR(max) SET @Data='1,tanw,2,keenboy' --Id,Name DECLARE @dataItem NVARCHAR(100) DECLARE data_cursor CURSOR FOR (SELECT * FROM split(@Data,';')) OPEN data_cursor FETCH NEXT FROM data_cursor INTO @dataItem WHILE @@F
-
SQLServer 批量插入数据的两种方法
运行下面的脚本,建立测试数据库和表值参数. 复制代码 代码如下: --Create DataBase create database BulkTestDB; go use BulkTestDB; go --Create Table Create table BulkTestTable( Id int primary key, UserName nvarchar(32), Pwd varchar(16)) go --Create Table Valued CREATE TYPE BulkUdt A
-
sql server中批量插入与更新两种解决方案分享(asp.net)
若只是需要大批量插入数据使用bcp是最好的,若同时需要插入.删除.更新建议使用SqlDataAdapter我测试过有很高的效率,一般情况下这两种就满足需求了 bcp方式 复制代码 代码如下: /// <summary> /// 大批量插入数据(2000每批次) /// 已采用整体事物控制 /// </summary> /// <param name="connString">数据库链接字符串</param> /// <param n
-
SQL批量插入数据几种方案的性能详细对比
公司技术背景:数据库访问类(xxx.DataBase.Dll)调用存储过程实现数据库的访问. 技术方案一: 压缩时间下程序员写出的第一个版本,仅仅为了完成任务,没有从程序上做任何优化,实现方式是利用数据库访问类调用存储过程,利用循环逐条插入.很明显,这种方式效率并不高,于是有了前面的两位同事讨论效率低的问题. 技术方案二: 由于是考虑到大数据量的批量插入,于是我想到了ADO.NET2.0的一个新的特性:SqlBulkCopy.有关这个的性能,很早之前我是亲自做过性能测试的,效率非常高.这也是我向
-
存储过程配合UpdateDaset方法批量插入Dataset数据实现代码
复制代码 代码如下: public bool SaveSMSMessage(SMSBatch smsBatch, DataSet smsMessages) { //using (TransactionScope ts = new TransactionScope(TransactionScopeOption.Suppress)) //{ foreach (DataRow row in smsMessages.Tables[0].Rows) row.SetModified(); SqlDataba
-
Mybatis批量插入Oracle数据的方法实例
目录 基本环境 需求 方案 改进 带自增 id 的批量插入 插入完成之后返回 sessionId 注意事项 总结 Reference 基本环境 语言:Java 8 数据库:Oracle ORM 框架:MyBatis 3.4.5 需求 批量插入数据,数据需要有自增 id.每次插入有一个唯一的 sessionId 来标记这些记录,插入完成之后返回这个 sessionId. 方案 循环插入单条记录,伪代码: int sessionId = dao.querySessionId(); for (Reco
-
C#.NET中如何批量插入大量数据到数据库中
在WEB项目开发过程中有时会碰到批量插入数据到数或者是将EXCEL文件据入到数据库中.为了方便实现可以先将EXCEL导入到GRIDVIEW中然后一次批量插入.实现代码如下: 前台代码 <asp:GridView ID="dgBom" runat="server" AutoGenerateColumns="false" CellPadding="1" CellSpacing="2"> <He
-
MyBatis批量插入大量数据(1w以上)
问题背景:只用MyBatis中foreach进行批量插入数据,一次性插入超过一千条的时候MyBatis开始报错.项目使用技术:SpringBoot.MyBatis 批量插入碰到的问题: java.lang.StackOverflowError: null 该问题是由于一次性插入数据1w条引起的,具体插入代码如下: userDao.batchInsert(list); <insert id="batchInsert" parameterType="java.util.Li
-
MyBatis批量插入(insert)数据操作
在程序中封装了一个List集合对象,然后需要把该集合中的实体插入到数据库中,由于项目使用了Spring+MyBatis的配置,所以打算使用MyBatis批量插入,由于之前没用过批量插入,在网上找了一些资料后最终实现了,把详细过程贴出来. 实体类TrainRecord结构如下: public class TrainRecord implements Serializable { private static final long serialVersionUID = -12069604621179
-
Mapper批量插入Oracle数据@InsertProvider注解
Mapper: @Mapper @OracleRepository public interface OracleRadiusMapper{ @InsertProvider(type = OracleRadiusProvider.class , method = "insertRadiusDataBatch") int insertRadiusDataBatch(@Param("list")List<AcctInfo> acctInfoList); }
-
sql下三种批量插入数据的方法
本文将介绍三种批量插入数据的方法.第一种方法是使用循环语句逐个将数据项插入到数据库中:第二种方法使用的是SqlBulkCopy,使您可以用其他源的数据有效批量加载 SQL Server 表:第三种使用的方法是sql server中的表值参数方法,表值参数是 SQL Server 2008 中的新参数类型.表值参数是使用用户定义的表类型来声明的.使用表值参数,可以不必创建临时表或许多参数,即可向 Transact-SQL 语句或例程(如存储过程或函数)发送多行数据. 代码示例: 此例子为控制台输出
-
java实现jdbc批量插入数据
首先介绍三种JDBC批量插入编程方法,进行比较,具体内容如下 JDBC批量插入主要用于数据导入和日志记录因为日志一般都是先写在文件下的等. 我用Mysql 5.1.5的JDBC driver 分别对三种比较常用的方法做了测试 方法一:使用PreparedStatement加批量的方法 try { Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection(o_url, userName, pass
-
php往mysql中批量插入数据实例教程
前言 假如说我有这样一个表,我想往这个表里面插入大量数据 CREATE TABLE IF NOT EXISTS `user_info` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增主键', `name` varchar(255) NOT NULL default '' COMMENT '姓名', `age` int(11) NOT NULL default '0' COMMENT '年龄', PRIMARY KEY (`id`) ) ENG
-
MyBatis动态SQL foreach标签实现批量插入的方法示例
需求:查出给定id的记录: <select id="getEmpsByConditionForeach" resultType="comtestbeansEmployee"> SELECT * FROM tb1_emplyee WHERE id IN <foreach collection="list" item="item_id" separator="," open="(&q
随机推荐
- AngularJS学习笔记之依赖注入详解
- IOS 中CALayer绘制图片的实例详解
- VBS教程:函数-UBound 函数
- Java动态代理分析及理解
- 定时器(setTimeout/setInterval)调用带参函数失效解决方法
- .Net Core中使用ref和Span<T>提高程序性能的实现代码
- 基于PHP实现商品成交时发送短信功能
- Excel数据导入Mysql数据库的实现代码
- ASP 类 Class入门 推荐
- FSO的强大功能
- addEventListener和attachEvent二者绑定的执行函数中的this不相同
- JavaScript 中级笔记 第五章 面向对象的基础
- MyEclipse8.6首次运行maven项目图标上没有小M的标识怎么解决
- 写了个监控nginx进程的Python脚本
- 没去过上海,不知道上海是这样的 上海,今夜请将我埋藏第1/3页
- mssql数据库游标批量修改符合条件记录的方法
- 深入理解mysql的自连接和join关联
- GridView中获取被点击行中的DropDownList和TextBox中的值
- 安全维护 IIS下 ASP 站点的高级技巧
- C#中线程同步对象的方法分析
其他
- layui table列文本太长隐藏
- java list中数据是否重复
- 通过shell脚本循环进入目录执行命令的方法
- mysql免安装版设置密码
- 微信小程序 vant weapp Button绑定参数
- idea右键项目卡住不动
- mysql 字段别名供后面使用
- springboots动态修改yml文件配置
- python3.4.4破解版下载
- python grabcut抠图后替换背景
- mybatis中使用jsonObject
- C# Task 多线程方法变量问题
- aop实现复杂的日志
- feignclient url设置动态
- python设置端口转发
- nginx查看请求header
- E语言API鼠标点击
- binary_cross_entropy加权重
- python解析带命名空间的xml出乱码
- vue 多车牌号输入