使用DataAdpater自动批量更新DataSet中的数据到数据库
使用DataAdpater的批量更新,好处是不用写具体的sql脚本,尤其是做web服务这个优势非常吸引人。
[WebMethod(Description = "Update服务提供的方法,将包含修改后数据的DateSet与本地数据库同步更新,成功返回更新的行数,失败返回-1。"), SoapHeader("currentUser")]
public int Update(DataSet ds)
{
if (!ValidateUser(currentUser.UserName, currentUser.UserPass))
{
return -1;
}
else
{
int res = 0;
using (SqlConnection sqlconn = new SqlConnection("Data Source=.;Initial Catalog=xxxx;User ID=sa;Password=sa"))
{
sqlconn.Open();
/ / //使用加强读写锁事务
SqlTransaction tran = sqlconn.BeginTransaction(IsolationLevel.ReadCommitted);
try
{
foreach (DataRow dr in ds.Tables[0].Rows)
{
//所有行设为修改状态
dr.SetModified();
}
//为Adapter定位目标表
SqlCommand cmd = new SqlCommand(string.Format("select * from {0} where 1=0 ", ds.Tables[0].TableName), sqlconn, tran);
SqlDataAdapter da = new SqlDataAdapter(cmd);
SqlCommandBuilder sqlCmdBuilder = new SqlCommandBuilder(da);
da.AcceptChangesDuringUpdate = false;
SqlCommand updatecmd = new SqlCommand(string.Format(" UPDATE [{0}] SET [Name] = @Name WHERE ([ID] = @ID) ", ds.Tables[0].TableName));
//不修改源DataTable
updatecmd.UpdatedRowSource = UpdateRowSource.None;
da.UpdateCommand = updatecmd;
da.UpdateCommand.Parameters.Add("@Name", SqlDbType.NVarChar, 50, "Name");
da.UpdateCommand.Parameters.Add("@ID", SqlDbType.Int, 4, ds.Tables[0].Columns[0].ColumnName);
da.UpdateBatchSize = 10000;
res = da.Update(ds.Tables[0]);
ds.AcceptChanges();
tran.Commit();
sqlconn.Close();
}
catch
{
tran.Rollback();
return -1;
}
}
return res;
}
}
注意:如果不指定DataAdapter的UpdateCommand ,则DataAdapter的CommandBuilder会自动构造默认的Update命令
使用DataAdpater自动批量更新DataSet中的数据到数据库的更多相关文章
- PHP如何批量更新MYSQL中的数据
最近项目需要用到批量更新数据库里的数据,在网上找了一下这方面的例子,觉得这个还不错,分享给大家. 在这个业务里里面涉及到了更新两张数据表,那么大家是不是会想到非常简单,马上上代码 $sql ,type ...
- PHP批量更新MYSQL中的数据
原文链接:https://blog.csdn.net/wuming19900801/article/details/62893429 $sql = "update newhouse_clic ...
- .net批量更新(插入、修改、删除)数据库
思路: 1. 设置DataTable中每行的状态标识,即调用DataRow的方法setAdded().setModified().Delete() 2. 使用DataAdapter的Update(Da ...
- 多线程查询数据,将结果存入到redis中,最后批量从redis中取数据批量插入数据库中【我】
多线程查询数据,将结果存入到redis中,最后批量从redis中取数据批量插入数据库中 package com.xxx.xx.reve.service; import java.util.ArrayL ...
- DataSet 中的数据排序 及 DataRow装成DataTable
1.DataSet 中的数据排序 DataSet ds = new DataSet(); // 获取当前排口的数据 ds = _xiaobill.GetHistoryData(yinZiBianm, ...
- 使用Ruby来实现批量更新AD中字段
准备工作 安装需要用到的gem gem install net-ldap gem install roo 准备好要更新的数据,比如exel表: /root/account.xlsx,内容如下 姓名 性 ...
- Winform中用comboBox来选择显示Dataset中表格数据
这是一次偷懒的尝试,因为每次都必须打开代码,调试才能看见数据,发现问题.也是借鉴了调试中查看dataset数据的模式,查看不同表格.经历一番研究,总算实现了想要的效果了,故作此一笔记.与人共享. 界面 ...
- C# 手动编写 DataSet,DataTable 及遍历DataSet中的数据
一.手动编写DataSet: 有时候不想从数据库导出 DataSet,或者有其他的需要,要将数据库里的DataSet包装成另一个样子,这个时候,了解DataSet的内部结构就非常必要.DataS ...
- 【Redis 向Redis中批量导入mysql中的数据(亲自测试)】
转自:https://blog.csdn.net/kenianni/article/details/84910638 有改动,仅供个人学习 问题提出:缓存的冷启动问题 应用系统新版本上线,这时候 re ...
随机推荐
- Problem F: 尖兵
#include<stdio.h> struct man{ ]; int grade; }; int main(void) { int t; int i,j,n; ],max; scanf ...
- iOS 日志管理异常捕获组件LFLogManager
一.功能 1.分级打印保存 解决一大堆重要.不重要打印信息在控制台混为一团的尴尬局面.可设置仅打印某级别及以上的信息.分为5类打印: DDLogError(@"打印并保存特别重要信息&quo ...
- TJSONTableObject跨平台解析JSON
TJSONTableObject跨平台解析JSON USES SynCrossPlatformJSON TSQLRecordPeoplePersistent = class(TPersistent) ...
- jQuery旋转插件—rotate
jQuery旋转插件,支持Internet Explorer 6.0+ .Firefox 2.0 .Safari 3 .Opera 9 .Google Chrome rotate(angle) 正值表 ...
- Android内存优化11 内存泄漏常见情况2 内部类泄漏
线程持久化 Java中的Thread有一个特点就是她们都是直接被GC Root所引用,也就是说Dalvik虚拟机对所有被激活状态的线程都是持有强引用,导致GC永远都无法回收掉这些线程对象,除非线程被手 ...
- iOS:触摸事件和手势识别的介绍
触摸事件和手势识别的介绍 1.iOS的输入事件 UIKit可识别三种类型的输入事件: 触摸事件 运动事件 远程控制事件 iOS中许多事件对象都是UIEvent类的实例,UIEvent记录了事件所产生 ...
- Add Two Numbers(from leetcode python 链表)
给定两个非空链表来表示两个非负整数.位数按照逆序方式存储,它们的每个节点只存储单个数字.将两数相加返回一个新的链表. 你可以假设除了数字 0 之外,这两个数字都不会以零开头. 示例: 输入:(2 -& ...
- 【JavaScript】DAG(有向无环图),以及相关的JS库
rappid在线设计器:http://www.jointjs.com/rappid#bc0d3f72-102b-4e6a-8663-00af78da3a2c NorthwoodsSoftware/Go ...
- C# WinForm 异步执行耗时操作并将过程显示在界面中
private void button3_Click(object sender, EventArgs e) { RunAsync(() => ...
- [HTML5] Build Flexible HTML with HTMLTemplates using Slots and Web Components
HTMLTemplates are part of the web components specification. In this lesson we will learn what are HT ...