在事務中執行sql語句

燕兒歸發表於2015-09-29
  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();  
                }  
            }  
        }

相關文章