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