MySql——MySqlDataAdapter批量更新
目录
- 前言
- 正文
- 批量更新方法
前言
MySqlDataAdapter的Update方法不仅仅能够做到更新,还可以删除,添加,查看MySql支持C#的.dll库,会发现其实很多东西都继承实现了微软的那一套。
因为在更改数据时会读到内存中,例如用DataTable存储 1,那么DataTable只是数据的副本。只要保证目标参数中的DataTable的行的状态对应增加、删除、更新等 2 就可以实现想要的结果 。
通过调用SetAdded、Delete、SetModied等方法也可以改变DataTable行增删改状态,而MySqlDataAdapter的Update方法就根据行的状态去更新表,Added的就插入,Deleted的就删除、Modified的就更新。
需要注意的是,假如你希望删除掉一行数据,并且在调用Update方法后能够在数据库中更新删除掉对应的行,那就 不能调用Remove方法,其是直接从DataTable中删除记录,而不是将行的DataRowState变更为Deleted,想要实现上述操作,应调用Delete方法。而且在调用Update方法之前不能调用 AcceptChanges, 调用AcceptChangs方法后,所有 DataRowState不为Unchanged的行将被修改为Unchanged。
正文
批量更新方法
public static int MultiUpateData(DataTable dtInfor)
{if (string.IsNullOrEmpty(dtInfor.TableName)){throw new Exception("DataTable.TableName is NULL.");}if (dtInfor.Rows.Count == 0){return -1;}string sqlStr = string.Format("SELECT * FROM {0} WHERE FALSE", dtInfor.TableName);using (MySqlConnection con = new MySqlConnection(MySqlConnectString)){using (MySqlCommand cmd = new MySqlCommand(sqlStr, con)){con.Open();MySqlTransaction transction = con.BeginTransaction(IsolationLevel.ReadCommitted);try{int count = 0;MySqlDataAdapter dataAdapter = new MySqlDataAdapter(cmd);dataAdapter.SelectCommand = new MySqlCommand(sqlStr, con);MySqlCommandBuilder builder = new MySqlCommandBuilder(dataAdapter);builder.ConflictOption = ConflictOption.OverwriteChanges;builder.SetAllValues = true;count = dataAdapter.Update(dtInfor);transction.Commit();dtInfor.AcceptChanges();dataAdapter.Dispose();builder.Dispose();return count;}catch (Exception){transction.Rollback();throw;}}}
}
其实MySqlDataAdapter的Update方法直接受DataTable或者DataSet这样的参数 ↩︎
增加、删除、更新 分别对应DataRowState枚举的 Added、Deleted、Modified ↩︎
MySql——MySqlDataAdapter批量更新相关推荐
- MySQL的批量更新和批量新增优化
MySQL的批量更新和批量插入优化 如果需要批量插入和批量更新操作就需要进行sql 的优化,否则近30万条数据的插入或更新就会耗费几分钟甚至更多的时间, 此文仅批量插入和批量更新的几种优化. 批量插入 ...
- 原生mysql的批量更新及性能测试
文章目录 一.前言 二.原生的写法 1.用到的函数是case ...when ...then 2.php拼接sql 3.是否能用到索引 三.批量更新的性能测试(50W数据) 1.首先是更新不同数量的性 ...
- mysql的批量更新的语法,MySql 批量更新语法
mysql数据库在批量更新某表的字段时,语法如下: UPDATE A AS a INNER JOIN ( SELECT * FROM A WHERE .... ) AS b ON a.order_i ...
- mysql语句批量更新数据库_sql 更新批量数据库语句
JDBC(六)批量处理sql 批量更新是分组在一起的一批更新,并以"批量"方式发送到数据库,而不是逐个发送更新. 一次发送一批更新到数据库,比一个一个发送更快,等待每个更新完成. ...
- Mysql + Mybatis批量更新报错 BadSqlGrammarException
报错 项目启动没问题,查询删除等接口都没问题,Mybatis写法和SQL都没问题,数据也都没问题,批量更新数据时,报错如下 2022-03-29 10:20:37.880 ERROR 133132 - ...
- mysql update批量更新_MySql中4种批量更新的方法
mysql 批量更新共有以下四种办法 1..replace into 批量更新 replace into test_tbl (id,dr) values (1,'2'),(2,'3'),...(x,' ...
- mysql update 批量更新_mysql 批量更新的两种方法
本文介绍两种批量更新数据方法 数据准备 create table account ( id int auto_increment primary key, balance int not null ) ...
- mysql jdbc批量更新_jdbc批量更新数据
{ boolean add = true; Connection conn = null; PreparedStatement pst = null; String sql = null; try { ...
- dapper mysql 批量_MySQL数据库之c#mysql批量更新的两种方法
本文主要向大家介绍了MySQL数据库之c#mysql批量更新的两种方法 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 总体而言update 更新上传速度还是慢. 1: 简单的 ...
最新文章
- Mysql 查询 字符串 (索引和通配符)
- 张一鸣的微博世界-产品篇二
- Centos 7 安装 Haproxy
- Python多任务(1.多进程的概念和用法 )
- C#比较运算符及解析
- axios vue 回调函数_vue中ajax请求与axios包完美处理
- 书单推荐:六本好书带你入门数据科学
- Vue优化策略_项目上线_02
- fat32硬盘格式能在苹果系统里读写操作吗?
- 二叉树 的建立及遍历 过程
- IOS开发-表视图LV3导航控制器
- Camera ISP与DSP的区别(二十五)
- 统计python文件中的代码,注释,空白对应的行数
- IIS故障问题(Connections_Refused)分析及处理
- java运用kmeans算法进行聚类
- php工程师外派,招聘兼职Php工程师|Php工程师外包-猿急送
- C语言图形颜色编程|颜色
- MySQL查询与数据库设计 #万能公式 #思维导图 #MySQL查询 #数据库设计规范 #第二部分
- 10步搞定App内测发布(蒲公英内测平台)
- 减少银行和金融机构的客户流失