网站建设所需技术,河源seo排名,沪上家居装修官网,广州注销营业执照这是最基本的批量更新。我使用的时候还不如逐条。 这好像还是官方的批量更新#xff0c;反正不咋地。 ///批量更新#xff0c;效率太低#xff0c;不如逐条更新static void Update(){SqlDataAdapter sda new SqlDataAdapter(select PID,FMAddress,MeanValue1,StatsVa… 这是最基本的批量更新。我使用的时候还不如逐条。 这好像还是官方的批量更新反正不咋地。 ///批量更新效率太低不如逐条更新static void Update(){SqlDataAdapter sda new SqlDataAdapter(select PID,FMAddress,MeanValue1,StatsValue1,RatioValue1,StatsFlag1,MeanValue2,StatsValue2,RatioValue2,StatsFlag2 from tblRptDay where RptDate2016-08 and RptDay02, SqlHelper.conStr);//sql语句多了空格字符串截取起始位置出错DataTable dtx new DataTable();sda.Fill(dtx);foreach (tblRptDay t in updateDayList){if (t.FMAddress ! null){try{DataRow[] drs dtx.Select(FMAddress t.FMAddress );DataRow dr drs[0];dr[MeanValue1] t.MeanValue1;dr[StatsValue1] t.StatsValue1;dr[RatioValue1] t.RatioValue1;dr[StatsFlag1] t.StatsFlag1;dr[MeanValue2] t.MeanValue2;dr[StatsValue2] t.StatsValue2;dr[RatioValue2] t.RatioValue2;dr[StatsFlag2] t.StatsFlag2;}catch (Exception){}}}SqlCommandBuilder scb new SqlCommandBuilder(sda);//执行更新sda.Update(dtx.GetChanges());//使DataTable保存更新dtx.AcceptChanges();}下面是另一种更新这是在表级别的更新。 先要获取主键和要更新的字段。然后改吧改吧形成一个新的datatable。再一次性更新到数据库。感觉和批量插入类似批量插入要自己造一个datatable然后一次性插入到数据库。 1 //把数据库的压力转移到内存 2 static void Update()3 {4 5 SqlConnection conn new SqlConnection(SqlHelper.conStr);6 7 conn.Open();8 SqlDataAdapter sd new SqlDataAdapter();9 SqlCommandBuilder sqlBulider new SqlCommandBuilder(sd);
10 DataSet dataset new DataSet();
11
12 sd.SelectCommand new SqlCommand(select PID,MeanValue1,StatsValue1,RatioValue1,StatsFlag1,MeanValue2,StatsValue2,RatioValue2,StatsFlag2,FMAddress from tblrptday_20170213 where RptDate date.Substring(0, 7) and RptDay date.Substring(8, 2) , conn);
13 //一定要加上主键
14
15 sd.Fill(dataset);
16
17 foreach (tblRptDay t in updateDayList)
18 {
19 if (t.FMAddress ! null)
20 {
21 for (int i 0; i dataset.Tables[0].Rows.Count; i)
22 {
23 if (t.FMAddress (string)dataset.Tables[0].Rows[i][FMAddress])
24 {
25 dataset.Tables[0].Rows[i].BeginEdit();
26 dataset.Tables[0].Rows[i][MeanValue1] t.MeanValue1;
27 dataset.Tables[0].Rows[i][StatsValue1] t.StatsValue1;
28 dataset.Tables[0].Rows[i][RatioValue1] t.RatioValue1;
29 dataset.Tables[0].Rows[i][StatsFlag1] t.StatsFlag1;
30 dataset.Tables[0].Rows[i][MeanValue2] t.MeanValue2;
31 dataset.Tables[0].Rows[i][StatsValue2] t.StatsValue2;
32 dataset.Tables[0].Rows[i][RatioValue2] t.RatioValue2;
33 dataset.Tables[0].Rows[i][StatsFlag2] t.StatsFlag2;
34 dataset.Tables[0].Rows[i].EndEdit();
35 break;
36 }
37
38 }
39
40 }
41 }
42 sd.Update(dataset.Tables[0]);
43 conn.Close();
44 dataset.Tables[0].Clear();
45 sd.Dispose();
46 dataset.Dispose();
47 //一定要释放
48 } 性能是逐条的20多倍。一般比表连更新方便。 还有表连批量更新写sql脚本进行批量更新基于ORM框架的更新。 因为orm框架会自动把sql存储起来然后再一次执行。所以基于ORM框架的更新类似于写sql脚本进行批量更新。 转载于:https://www.cnblogs.com/gmf312/p/FZ.html