c#mysql批量更新的两种方法
总体而言update 更新上传速度还是慢.
1: 简单的insert 速度稍稍比MySqlDataAdapter慢一点
配合dapper
配置文件
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2"/>
</startup>
<connectionStrings>
<add name="sqlconnectionString" connectionString="server=127.0.0.1;database=MyDataBase;User=sa;password=123456;Connect Timeout=1000000"/>
<!--<add name="mysqlconnectionString" connectionString="Database=terminal_info;Data Source=127.0.0.1;User Id=root;Password=123456;CharSet=utf8;port=3306"/>-->
<add name="mysqlconnectionString" connectionString="Database=terminal_info;Data Source=192.168.1.220;User Id=root;Password=root;CharSet=utf8;port=3306"/>
</connectionStrings>
</configuration>
string connectionString = ConfigurationManager.ConnectionStrings["mysqlconnectionString"].ToString();
public int Update(BaseTable model)
{
#region SQL语句
const string sql = @"
UPDATE terminal_base
SET license_number2 = @license_number2 WHERE license_number = @license_number";
#endregion
using (MySqlConnection connection = new MySqlConnection(connectionString))
{ return connection.Execute(sql, model);
} }
public class BaseTable
{
public string license_number { get;set; } //客户编码
public string shop_name { get; set; } //店铺名称
public string user_name { get; set; } //姓名
public string phone_number { get; set; } //手机号 }
更新5万数据用了十来分钟吧.单线程处理的
2用MySqlDataAdapter上传 这个坑不少,网上资料也很少, 下边的方式是从web版本 serversql的写法改进而来, fill是 从当前数据库查询到数据填充到dataset, update是把 改完的dataset 上传到mysql .
/// <summary>
///使用MySqlDataAdapter批量更新数据
/// </summary>
/// <param name="connectionString">数据库连接字符串</param>
/// <param name="table">数据表</param>
public void BatchUpdate(List<BaseTable> model)
{
DataTable table = ListToDatatable.ToDataTable(model);
table.TableName = "terminal_base";
// table.ExtendedProperties.Add("SQL", "select license_number,license_number2 from terminal_base");
MySqlConnection connection = new MySqlConnection(connectionString);
connection.Open();
//创建数据适配器
string sqlcommd= "select license_number,license_number2 from zyzs_terminal_base"; MySqlDataAdapter adapter = new MySqlDataAdapter(sqlcommd, connection);
DataSet ds = new DataSet();//创建数据集
adapter.Fill(ds, "terminal_base");
// ds.Tables.Clear();
//给SqlDataAdapter的UpdateCommand属性指定执行更新操作的SQL语句select * from zyzs_terminal_base
adapter.UpdateCommand = new MySqlCommand("update terminal_base set license_number2 = @license_number2 where license_number=@license_number", connection); //添加参数并赋值
adapter.UpdateCommand.Parameters.Add("@license_number2", MySqlDbType.VarChar, , "license_number2");
MySqlParameter prams_ID = adapter.UpdateCommand.Parameters.Add("@license_number", MySqlDbType.VarChar);
prams_ID.SourceColumn = "license_number";
prams_ID.SourceVersion = DataRowVersion.Original;
//填充数据集 //调用Update方法提交更新后的数据集ds,并同步更新数据库数据
adapter.Update(ds, "terminal_base");
}
#endregion
这个方法我是报了错,clr 编译器上下文的问题, 搜搜百度,改改调试里边某项设置就可以了.
c#mysql批量更新的两种方法的更多相关文章
- mysql批量更新的两种方式效率试验<二>
Mysql两种批量更新的对比 简介: mysql搭载mybits框架批量更新有两种方式,一种是在xml中循环整个update语句,中间以‘:’隔开,还有一种是使用case when 变相实现批量更新, ...
- mybatis学习之路----批量更新数据两种方法效率对比
原文:https://blog.csdn.net/xu1916659422/article/details/77971696/ 上节探讨了批量新增数据,这节探讨批量更新数据两种写法的效率问题. 实现方 ...
- mysql批量update的两种方法
today a question let me happy(抓狂) 头儿分了一个小任务,让修改循环调用dao层的那些不啦不啦不啦,鉴于之前写过批量更新的玩意,so 很快代码就修改完了,but 测的时候 ...
- mysql 批量更新的四种方法
批量更新的方法: 1 ) 逐条更新 代码如下: UPDATE mytable SET myfield = 'value' WHERE other_field = 'other_value'; 如果更新 ...
- mysql级联更新的两种方式:触发器更新和外键
1.mysql级联更新有两种方式:触发器更新和外键更新. 2.触发器更新和外键更新的目的都是为了保证数据完整性. 我们通常有这样的需求:删除表Table 1中记录,需要同时删除其它表中与Table 1 ...
- mybatis 根据id批量删除的两种方法
原文:https://blog.csdn.net/qq_40010745/article/details/81032218 mybatis 根据id批量删除的两种方法 第一种,直接传递给mappe ...
- 代码操作Word时,目录自动更新的两种方法
最近的项目中有一个功能点为:根据分析数据库并生成报告.不过不是大数据.数据挖掘之类,报告的内容.组织方式都是事先固定下来的.实现的方式为,在普通word文档中插入书签制成模板,然后程序使用OpenXM ...
- Mysql批量更新的三种方式
前言 批量插入由于mysql的VALUES原生支持,使用较为便利. 批量更新的写法一般有三种,在更新数量较少的情况下,前两种性能不相上下.但是在更新字段增加,更新条数较多(500以上)建议使用第三种写 ...
- 【ADO.NET-中级】百万级数据的批量插入的两种方法测试
在SQL Server 中插入一条数据使用Insert语句,但是如果想要批量插入一堆数据的话,循环使用Insert不仅效率低,而且会导致SQL一系统性能问题.下面介绍SQL Server支持的两种批量 ...
随机推荐
- zabbix 与 nginx (五)
zabbix监控nginx的大概流程为: 1:被监控端的nginx开启stub_status模块 2:通过脚本的方式获取nginx的状态值 3:修改被监控端的配置文件,Userparameter= ...
- Vue 移动端常用tap事件封装
基于Vue的移动端项目,有些时间原生并没用提供,需要我们自己手动封装,可以封装一些自定义指令来供全局使用. 本文封装了 tap, swipe, swipeleft, swiperight, swipe ...
- 公式推导:【BACF】
[BACF]: Kiani Galoogahi H, Fagg A, Lucey S. Learning Background-Aware Correlation Filters for Visual ...
- CRM 模拟用户
web api 模拟用户 转:https://blog.csdn.net/vic0228/article/details/80649615 var req = new XMLHttpRequest() ...
- CountDownLatch两种用法
1.当前线程等待其他线程执行完毕后在执行. 2.模拟高并发场景. 在多线程编程里,CountDownLatch是一个很好的计数器工具. 常用的两个方法: 1.计数器减一 public void cou ...
- AlexNet实践
注释: CNN使用TF搭建比较简单,就像Hough检测使用CV很简单一样.但是怎么使用CNN去做一些实际操作,或者说怎么使用现有的方法进行慢慢改进,这是一个很大的问题! 直接跟着书本或者视频学习有点膨 ...
- tomcat JRE_HOME
tomcat 不知道什么时候开始需要 JRE_HOME了: D:\java\apache-tomcat-7.0.68\bin>startup.batJAVA_HOME == D:\Progra ...
- Idea中类上有叉的解决方法
idea中类的头上出现X解决办法 ctrl+alt+s 在弹出的菜单上选择Compiler下的Excludes 右边会有 移除掉,点击ok, 重启idea就可以了
- html2canvas html截图插件
以下我总结了一些注意事项,在代码中注释了,仅供参考. html2canvas.js点击付:完整使用的demo ,如下: <!DOCTYPE html><html lang=" ...
- 算术运算,赋值运算,if语句,while,continue语句
算术运算 print(10 / 3)=3.333333333333 print(10 // 3)=3 print(10 ** 2)=100 赋值运算增量赋值 age=18 age+=1 print(a ...