在事务中执行sql语句

  1. public static void ExecuteSqlWithGoUseTran(String sql)  
        {  
            using (SqlConnection conn = new SqlConnection(connectionString))  
            {  
                conn.Open();  
                SqlCommand cmd = new SqlCommand();  
                cmd.Connection = conn;  
                SqlTransaction tx = conn.BeginTransaction();  
                cmd.Transaction = tx;  
                try  
                {  
                    //注: 此处以 换行_后面带0到多个空格_再后面是go 来分割字符串  
                    String[] sqlArr = Regex.Split(sql.Trim(), "\r\n\\s*go", RegexOptions.IgnoreCase);    
                    foreach (string strsql in sqlArr)  
                    {  
                        if (strsql.Trim().Length > 1 && strsql.Trim() != "\r\n")  
                        {  
                            cmd.CommandText = strsql;  
                            cmd.ExecuteNonQuery();  
                        }  
                    }  
                    tx.Commit();  
                }  
                catch (System.Data.SqlClient.SqlException E)  
                {  
                    tx.Rollback();  
                    throw new Exception(E.Message);  
                }  
                finally  
                {  
                    conn.Close();  
                }  
            }  
        }
posted @ 2015-09-29 21:53  燕儿归  阅读(679)  评论(0编辑  收藏  举报