mysql c# 执行多条sql语句_C#_C#中实现一次执行多条带GO的sql语句实例,本文实例讲述了C#中实现一次 - phpStudy...

C#中实现一次执行多条带GO的sql语句实例

本文实例讲述了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();

}

}

}

}

}

希望本文所述对大家的C#程序设计有所帮助。相关阅读:

异步JavaScript编程中的Promise使用方法

win10测试版怎么样才能通过审核推送给用户?

为什么我没有接到Windows 10升级通知?原来是这样

jQuery点击改变class并toggle及toggleClass()方法定义用法

图解Java线程的生命周期

jsp连接MySQL操作GIS地图数据实现添加point的功能代码

MySQL中表分区技术详细解析

JS实现点击按钮控制Div变宽、增高及调整背景色的方法

用vs调试sql存储过程图文介绍

PHP中常用的几个 mysql操作

Java的Jackson库的使用及其树模型的入门学习教程

sql字符串函数大全和使用方法示例

JavaScript框架是什么?怎样才能叫做框架?

微信公众平台实现获取用户OpenID的方法

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值