批量插入数据到数据库

 

第一种方法使用事务向

    除了可以批量插入数据外还可以监测插入数据所消耗的时间

 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         }
View Code

 

第二种方法使用集合

   除了可以批量插入数据外还可以监测插入数据所消耗的时间

 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         }
View Code

 

posted on 2015-01-14 11:05  larry_fu  阅读(83)  评论(0)    收藏  举报

导航