C#中實現(xiàn)一次執(zhí)行多條帶GO的sql語句實例
更新時間:2015年09月26日 16:23:47 作者:yenange
這篇文章主要介紹了C#中實現(xiàn)一次執(zhí)行多條帶GO的sql語句,以實例形式較為詳細(xì)的分析了C#執(zhí)行sql語句的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
本文實例講述了C#中實現(xiàn)一次執(zhí)行多條帶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出現(xiàn)的, 有則出錯。
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. 不用事務(wù):");
ExecuteSqlWithGo(sql);
Console.WriteLine("2. 用事務(wù):");
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#程序設(shè)計有所幫助。
相關(guān)文章
C# Windows API應(yīng)用之基于GetDesktopWindow獲得桌面所有窗口句柄的方法
這篇文章主要介紹了C# Windows API應(yīng)用之基于GetDesktopWindow獲得桌面所有窗口句柄的方法,結(jié)合實例形式分析了GetDesktopWindow函數(shù)用于獲取窗口句柄的具體使用方法與相關(guān)注意事項,需要的朋友可以參考下2016-08-08
.net 通過 WebAPI 調(diào)用nsfwjs 進(jìn)行視頻鑒別功能
這篇文章主要介紹了.net 通過 WebAPI 調(diào)用 nsfwjs 進(jìn)行視頻鑒別,文末給大家提到了FFMPEG獲取視頻關(guān)鍵幀并保存成jpg圖像的相關(guān)知識,需要的朋友可以參考下2021-09-09
C#讀取本地網(wǎng)絡(luò)配置信息的方法小結(jié)
在現(xiàn)代軟件開發(fā)中,處理網(wǎng)絡(luò)配置信息是一個常見需求,無論是開發(fā)桌面、移動還是服務(wù)器應(yīng)用程序,了解如何在C#中讀取和管理網(wǎng)絡(luò)配置信息都是非常有用的,本文將探討在C#中讀取本地網(wǎng)絡(luò)配置信息的方法,并提供幾個實際應(yīng)用場景的示例,需要的朋友可以參考下2024-10-10
基于使用BeginInvoke,EndInvoke異步調(diào)用委托的實現(xiàn)代碼
本篇文章是對使用BeginInvoke,EndInvoke異步調(diào)用委托的實現(xiàn)代碼進(jìn)行了分析介紹,需要的朋友參考下2013-05-05
詳解Unity使用ParticleSystem粒子系統(tǒng)模擬藥水在血管中流動(粒子碰撞)
這篇文章主要介紹了Unity使用ParticleSystem粒子系統(tǒng)模擬藥水在血管中流動(粒子碰撞),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-05-05

