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, 50, "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 編譯器上下文的問題, 搜搜百度,改改調試里邊某項設置就可以了.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM