python执行多个sql语句_c#教程之C#中实现一次执行多条带GO的sql语句实例

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Collections;

using System.Text.RegularExpressions;

using System.Data.SqlClient;

namespace ConsoleApplication1

{

class Program

{

//注: 在cmd.ExecuteNonQuery()是不允许语句中有GO出现的, 有则出错。

static string connectionString = "server=20111011-2204\\SQLSERVER2008;uid=ecuser;pwd=1234;database=Stu;";

static void Main(string[] args)

{

string sql =

@"Alter table Student add DateBak varchar(16)

go

Update Student set DateBak = convert(char,getdate(),101)

go

Update Student set Memo = DateBak

go

Alter table Student drop column DateBak

go

";

Console.WriteLine("1. 不用事务:");

ExecuteSqlWithGo(sql);

Console.WriteLine("2. 用事务:");

ExecuteSqlWithGoUseTran(sql);

Console.ReadLine();

}

public static void ExecuteSqlWithGo(String sql)

{

int effectedRows = 0;

using (SqlConnection conn = new SqlConnection(connectionString))

{

conn.Open();

SqlCommand cmd = new SqlCommand();

cmd.Connection = conn;

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;

effectedRows = cmd.ExecuteNonQuery();

}

}

}

catch (System.Data.SqlClient.SqlException E)

{

throw new Exception(E.Message);

}

finally

{

conn.Close();

}

}

}

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();

}

}

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值