批量插入数据到数据库
第一种方法使用事务向
除了可以批量插入数据外还可以监测插入数据所消耗的时间
1 protected void btnInsert_Click(object sender, EventArgs e) 2 { 3 System.Diagnostics.Stopwatch stopwatch = new Stopwatch(); 4 stopwatch.Start(); // 开始监视代码运行时间 5 //插入1000条数据到数据库 6 InsertDataTODB(); 7 8 stopwatch.Stop(); // 停止监视 9 TimeSpan timespan = stopwatch.Elapsed; // 获取当前实例测量得出的总时间 10 double hours = timespan.TotalHours; // 总小时 11 double minutes = timespan.TotalMinutes; // 总分钟 12 double seconds = timespan.TotalSeconds; // 总秒数 13 double milliseconds = timespan.TotalMilliseconds; // 总毫秒数 14 TextBox1.Text = hours.ToString(); 15 TextBox2.Text = minutes.ToString(); 16 TextBox3.Text = seconds.ToString(); 17 TextBox4.Text = milliseconds.ToString(); 18 } 19 20 /// <summary> 21 /// 批量插入数据到数据库的某一张表 22 /// </summary> 23 private void InsertDataTODB() 24 { 25 string connStr = ConfigurationManager.ConnectionStrings["strCon"].ConnectionString; 26 SqlConnection myConnection = new SqlConnection(connStr); 27 myConnection.Open(); 28 SqlTransaction myTrans = myConnection.BeginTransaction(); 29 //使用New新生成一个事务 30 SqlCommand myCommand = new SqlCommand(); 31 myCommand.Transaction = myTrans; 32 try 33 { 34 //这儿做循环插入 35 for (int i = 0; i < 1000; i++) 36 { 37 myCommand.CommandText = string.Format("insert into aa values('{0}','{1}')", "张" + i, i); 38 myCommand.Connection = myConnection; 39 myCommand.ExecuteNonQuery(); 40 } 41 myTrans.Commit(); 42 } 43 catch (Exception e) 44 { 45 myTrans.Rollback(); 46 } 47 finally 48 { 49 myConnection.Close(); 50 } 51 }
第二种方法使用集合
除了可以批量插入数据外还可以监测插入数据所消耗的时间
1 /// <summary> 2 /// 两个知识点,第一监视代码的运行时间,显示结果,第二批量向数据库中插头数据 3 /// </summary> 4 /// <param name="sender"></param> 5 /// <param name="e"></param> 6 protected void Button1_Click(object sender, EventArgs e) 7 { 8 System.Diagnostics.Stopwatch stopwatch = new Stopwatch(); 9 stopwatch.Start(); // 开始监视代码运行时间 10 //插入1000条数据到数据库 11 ArrayList list = new ArrayList(); 12 13 for (int i = 0; i < 1000; i++) 14 { 15 string sql =string.Format("insert into aa values('{0}','{1}')","五"+i,i); 16 list.Add(sql); 17 } 18 ExecuteSqlTran(list); 19 20 stopwatch.Stop(); // 停止监视 21 TimeSpan timespan = stopwatch.Elapsed; // 获取当前实例测量得出的总时间 22 double hours = timespan.TotalHours; // 总小时 23 double minutes = timespan.TotalMinutes; // 总分钟 24 double seconds = timespan.TotalSeconds; // 总秒数 25 double milliseconds = timespan.TotalMilliseconds; // 总毫秒数 26 TextBox1.Text = hours.ToString(); 27 TextBox2.Text = minutes.ToString(); 28 TextBox3.Text = seconds.ToString(); 29 TextBox4.Text = milliseconds.ToString(); 30 31 } 32 /// <summary> 33 /// 执行多条SQL语句,实现数据库事务。 34 /// </summary> 35 /// <param name="SQLStringList">多条SQL语句</param> 36 public static void ExecuteSqlTran(ArrayList SQLStringList) 37 { 38 using (SqlConnection conn = new SqlConnection(connStr)) 39 { 40 conn.Open(); 41 SqlCommand cmd = new SqlCommand(); 42 cmd.Connection = conn; 43 SqlTransaction tx = conn.BeginTransaction(); 44 cmd.Transaction = tx; 45 try 46 { 47 for (int n = 0; n < SQLStringList.Count; n++) 48 { 49 string strsql = SQLStringList[n].ToString(); 50 if (strsql.Trim().Length > 1) 51 { 52 cmd.CommandText = strsql; 53 cmd.ExecuteNonQuery(); 54 } 55 } 56 tx.Commit(); 57 } 58 catch (System.Data.SqlClient.SqlException E) 59 { 60 tx.Rollback(); 61 throw new Exception(E.Message); 62 } 63 finally 64 { 65 conn.Close(); 66 } 67 } 68 }
浙公网安备 33010602011771号