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

 更新时间:2015年09月26日 16:23:47   作者:yenange  
这篇文章主要介绍了C#中实现一次执行多条带GO的sql语句,以实例形式较为详细的分析了C#执行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#程序设计有所帮助。

相关文章

  • C# Windows API应用之基于GetDesktopWindow获得桌面所有窗口句柄的方法

    C# Windows API应用之基于GetDesktopWindow获得桌面所有窗口句柄的方法

    这篇文章主要介绍了C# Windows API应用之基于GetDesktopWindow获得桌面所有窗口句柄的方法,结合实例形式分析了GetDesktopWindow函数用于获取窗口句柄的具体使用方法与相关注意事项,需要的朋友可以参考下
    2016-08-08
  • C#字符串自增自减算法详解

    C#字符串自增自减算法详解

    这篇文章主要为大家详细介绍了C#字符串自增自减的算法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • C#简单操作MongoDB的步骤全纪录

    C#简单操作MongoDB的步骤全纪录

    最近花了不少时间研究学习了MongoDB数据库的相关知识,下面这篇文章主要给大家介绍了关于C#简单操作MongoDB的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧
    2018-09-09
  • .net 通过 WebAPI 调用nsfwjs 进行视频鉴别功能

    .net 通过 WebAPI 调用nsfwjs 进行视频鉴别功能

    这篇文章主要介绍了.net 通过 WebAPI 调用 nsfwjs 进行视频鉴别,文末给大家提到了FFMPEG获取视频关键帧并保存成jpg图像的相关知识,需要的朋友可以参考下
    2021-09-09
  • C#读取本地网络配置信息的方法小结

    C#读取本地网络配置信息的方法小结

    在现代软件开发中,处理网络配置信息是一个常见需求,无论是开发桌面、移动还是服务器应用程序,了解如何在C#中读取和管理网络配置信息都是非常有用的,本文将探讨在C#中读取本地网络配置信息的方法,并提供几个实际应用场景的示例,需要的朋友可以参考下
    2024-10-10
  • 基于C#实现图片滑动验证码的示例代码

    基于C#实现图片滑动验证码的示例代码

    这篇文章主要为大家介绍了如何利用C#语言制作一个图片滑动验证码,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2022-04-04
  • 基于使用BeginInvoke,EndInvoke异步调用委托的实现代码

    基于使用BeginInvoke,EndInvoke异步调用委托的实现代码

    本篇文章是对使用BeginInvoke,EndInvoke异步调用委托的实现代码进行了分析介绍,需要的朋友参考下
    2013-05-05
  • 详解Unity使用ParticleSystem粒子系统模拟药水在血管中流动(粒子碰撞)

    详解Unity使用ParticleSystem粒子系统模拟药水在血管中流动(粒子碰撞)

    这篇文章主要介绍了Unity使用ParticleSystem粒子系统模拟药水在血管中流动(粒子碰撞),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-05-05
  • C#文件读写操作详细操作指南

    C#文件读写操作详细操作指南

    这篇文章主要给大家介绍了关于C#文件读写操作详细操作指南,在后端开发中使用C#语言进行文件操作是一个常见的任务,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-10-10
  • C#使用正则表达式实现常见的格式验证

    C#使用正则表达式实现常见的格式验证

    这篇文章主要为大家详细介绍了C#如何使用正则表达式实现常见的格式验证,例如:电话号码、密码、邮编等,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-01-01

最新评论