存储过程配合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;

}

时间: 2024-09-27 16:16:14

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

jdbc批量出入-jdbc批量插入,数据只有一条

问题描述 jdbc批量插入,数据只有一条 我统一10条插入一次,可是最后数据库只有第十条数据,前九条都没有,插入几次都是,怎么办 List backList = new ArrayList(); Connection con = getConnection(); PreparedStatement stat = null; String str= null; int j = 0; for(int i=0;i<list.size();i++){ str = list.get(i); String[

MyBatis批量插入(insert)数据操作_java

在程序中封装了一个List集合对象,然后需要把该集合中的实体插入到数据库中,由于项目使用了Spring+MyBatis的配置,所以打算使用MyBatis批量插入,由于之前没用过批量插入,在网上找了一些资料后最终实现了,把详细过程贴出来. 实体类TrainRecord结构如下: public class TrainRecord implements Serializable { private static final long serialVersionUID = -12069604621179

Sqlite批量插入大数据的例子

这两天被数据库插入批量数据折磨的有点抓狂还好找到了解决方法,话不多说,直接看下面两部分代码: SQLiteDatabase db = dbHelper.getWritableDatabase(); //         LogUtils.i("开始解析*****************"+ new SimpleDateFormat("yyyy-MM-dd  HH:mm:ss").format(new Date()));         for (int i = 0;

批量插入oracle11g数据OracleBulkCopy 出错,没准你也能遇到。

问题描述 PrivateSubButton4_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton4.ClickDimplscAsOracle.DataAccess.Client.OracleBulkCopy'plsc=NewOracle.DataAccess.Client.OracleBulkCopy("DataSource=80.81.82.154;PersistSecurityInfo=True;Us

sql下三种批量插入数据的方法_MsSql

本文将介绍三种批量插入数据的方法.第一种方法是使用循环语句逐个将数据项插入到数据库中:第二种方法使用的是SqlBulkCopy,使您可以用其他源的数据有效批量加载 SQL Server 表:第三种使用的方法是sql server中的表值参数方法,表值参数是 SQL Server 2008 中的新参数类型.表值参数是使用用户定义的表类型来声明的.使用表值参数,可以不必创建临时表或许多参数,即可向 Transact-SQL 语句或例程(如存储过程或函数)发送多行数据.       代码示例:    

sql下三种批量插入数据的方法

本文将介绍三种批量插入数据的方法.第一种方法是使用循环语句逐个将数据项插入到数据库中:第二种方法使用的是SqlBulkCopy,使您可以用其他源的数据有效批量加载 SQL Server 表:第三种使用的方法是sql server中的表值参数方法,表值参数是 SQL Server 2008 中的新参数类型.表值参数是使用用户定义的表类型来声明的.使用表值参数,可以不必创建临时表或许多参数,即可向 Transact-SQL 语句或例程(如存储过程或函数)发送多行数据. 代码示例: 此例子为控制台输出

java实现jdbc批量插入数据_java

首先介绍三种JDBC批量插入编程方法,进行比较,具体内容如下 JDBC批量插入主要用于数据导入和日志记录因为日志一般都是先写在文件下的等. 我用Mysql 5.1.5的JDBC driver 分别对三种比较常用的方法做了测试 方法一:使用PreparedStatement加批量的方法 try { Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection(o_url, userName, pass

jdbc批量插入抛异常,怎么找到有问题的数据

问题描述 jdbc批量插入抛异常,怎么找到有问题的数据 批量插入一批数据,如果这批数据中,有几条是有问题的,executeBatch会出异常,我怎么挑出来,是那几条有问题 解决方案 那你可以把批量换成单条插入,然后将插入代码放在try-catch中,并且在catch分支中打印异常时的插入数据信息. 祝好. 解决方案二: 数据量大,必须批量插入,单条插入不行 解决方案三: 你把代码亮出来啊,不然别人没法帮你啊. 解决方案四: 可以先二分法等逐步排除哪些语句语法有问题.

Yii2 批量插入、更新数据实例

在使用yii2开发项目时,有时候会遇到这样的情况: 向后台发送多条数据,其中一些数据已经存在记录,只需要对其部分字段的值进行修改;而另一部分的数据则需要新添加进去. 这就需要对添加的数据进行判断,其中一些执行update,剩下的执行insert 代码如下,不对的地方请指教: //批量更新,并将需要批量插入的数据放入数组中 foreach($goods as $k => $v) { if(yourModel::updateAllCounters( ['goods_num' => $v], ['g