批量插入与更新随记

一、批量插入数据:

int times = 0;

for (int count = 0; count < dt.Rows.Count; times++)

{

for (int i = 0; i < 400 && 400 * times + i < dt.Rows.Count; i++, count++)

{

dtTemp.Rows.Add(dt.Rows[count].ItemArray);

} myDataAdapter.Update(dtTemp);

dtTemp.Rows.Clear();

}

二、批量更新数据:

public static bool MultiUpdateData(DataTable data, string Columns, string tableName)

{

using (OracleConnection connection = new OracleConnection(connectionString))

{

string SQLString = string.Format("select {0} from {1} where rownum=0", Columns, tableName);

using (OracleCommand cmd = new OracleCommand(SQLString, connection))

{

try {

connection.Open();

OracleDataAdapter myDataAdapter = new OracleDataAdapter();

myDataAdapter.SelectCommand = new OracleCommand(SQLString, connection);

OracleCommandBuilder custCB = new OracleCommandBuilder(myDataAdapter);

custCB.ConflictOption = ConflictOption.OverwriteChanges;

custCB.SetAllValues = true;

foreach (DataRow dr in data.Rows)

{

if (dr.RowState == DataRowState.Unchanged)

dr.SetModified();

}

myDataAdapter.Update(data);

data.AcceptChanges();

myDataAdapter.Dispose();

return true;

} catch (System.Data.OracleClient.OracleException E)

{

connection.Close();

return false;

}

}

}

}

时间: 2024-10-12 07:51:31

批量插入与更新随记的相关文章

java批量插入或更新的问题

在批量插入或者更新中,setXXX的时候字段类型必须一致.例如:在普通sql中 pstmt8.setBigDecimal(j ,xxx);可以写成pstmt8.setString(j,xxx.toString()); 但在批量插入时必须写成pstmt8.setBigDecimal(j,xxx);否则批处理会报提交中至少有一条不成功的问题.折腾一下午,终于搞好了.顺便记下来,方便参考.

Asp.net QueryString批量插入和更新

public static string InsertOrUpdateQueryString(string[] keys, string[] values) { return InsertOrUpdateQueryString(System.Web.HttpContext.Current.Request, keys, values); } public static string InsertOrUpdateQueryString(System.Web.HttpRequest request,

C#使用SqlDataAdapter 实现数据的批量插入和更新

近日由于项目要求在需要实现中型数据的批量插入和更新,晚上无聊,在网上看到看到这样的一个实现方法,特摘抄过来,以便以后可能用到参考. 一.数据的插入 DateTime begin = DateTime.Now; string connectionString = ......; using(SqlConnection conn = new SqlConnection(connectionString)){ conn.Open(); SqlDataAdapter sd = new SqlDataAd

MyBatis动态批量插入、更新Mysql数据库的通用实现方案

一.业务背景 由于需要从A数据库提取大量数据同步到B系统,采用了tomikos+jta进行分布式事务管理,先将系统数据源切换到数据提供方,将需要同步的数据查询出来,然后再将系统数据源切换到数据接收方,进行批量的插入和更新操作, 关于数据源的切换可以参考之前的文章<spring+springMVC+Mybatis架构下采用AbstractRoutingDataSource.atomikos.JTA实现多数据源灵活切换以及分布式事务管理> 二.批量插入的具体实现 1.查询需要同步的数据: @Aut

Hibernate批处理操作优化 (批量插入、更新与删除)

问题描述 我开发的网站加了个新功能:需要在线上处理表数据的批量合并和更新,昨天下午发布上线,执行该功能后,服务器的load突然增高,变化曲线异常,SA教育了我一番,让我尽快处理,将CPU负载降低. 工作所需,我经常要写些程序批量处理数据,每次执行几十万数据处理的时候,我机子的CPU都会飙高,而且数据处理速度会越来越慢.比如第一个1W条要5分钟,第二个1W条就要10分钟,要干其他事情的时候机子也卡的不行,只能等着处理完数据. 其实我一直认为是数据量太大,从来不认为是程序问题,所以一直没怎么关注过.

sql server中批量插入与更新两种解决方案分享(存储过程)

转自http://www.shangxueba.com/jingyan/1940447.html 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 FETC

批量插入或更新数据

/// <summary>        /// 大数据单表批量插入,带事务        /// </summary>        /// <param name="keepID"></param>        /// <param name="tableName"></param>        /// <param name="dt"></para

启用事务操作,解决批量插入或更新sqlite,mssql等数据库耗时问题

private void button1_Click(object sender, EventArgs e) { //Sqlite使用事务批量操作 极大的提高速度 DateTime starttime = DateTime.Now; using (SQLiteConnection con = new SQLiteConnection(connStr)) { con.Open(); DbTransaction trans = con.BeginTransaction();//开始事务 SQLite

Mybatis+Oracle进行数据的批量插入和更新

项目中会遇到这样的情况,查询出多条记录(一个List对象集合),一次性要插入多条数据到数据库中,下面就拿Data类来看看两种插入方法: 方法一: Mybatis本身只支持逐条插入,比较笨的方法,就是遍历一个List,循环中逐条插入,比如下面这段代码 <pre class="java" style="margin-top: 0px; margin-bottom: 10px; box-sizing: border-box; overflow: auto; font-fami