手机
当前位置:查字典教程网 >编程开发 >C#教程 >c#实现数据库事务示例分享
c#实现数据库事务示例分享
摘要:复制代码代码如下:usingSystem;usingSystem.Data.SqlClient;namespaceExecuteSqlTra...

复制代码 代码如下:

using System;

using System.Data.SqlClient;

namespace ExecuteSqlTran

{

class Program

{

class Result<T>

{

public T data;

public string Message;

public bool Success;

public string StackTrace;

}

struct ExecuteableUnit

{

public string SQL;

public SqlParameter[] param;

}

/// <summary>

/// 执行多条SQL语句,实现数据库事务。

/// </summary>

/// <param name="SQLStringList">SQL语句的哈希表(key为sql语句,value是该语句的SqlParameter[])</param>

private static Result<int> ExecuteSqlTransaction(params ExecuteableUnit[] executeableUnits)

{

using (SqlConnection connection = new SqlConnection(""))

{

connection.Open();

SqlCommand command = connection.CreateCommand();

SqlTransaction transaction = connection.BeginTransaction();

command.Connection = connection;

command.Transaction = transaction;

int result = 0;

try

{

foreach(ExecuteableUnit exeUnit in executeableUnits)

{

command.CommandText = exeUnit.SQL;

if(exeUnit.param.GetLength(1) > 0)

{

foreach(SqlParameter p in exeUnit.param)

command.Parameters.Add(p);

}

result += command.ExecuteNonQuery();

}

transaction.Commit();

}

catch (Exception ex)

{

// Attempt to roll back the transaction.

try

{

transaction.Rollback();

}

catch (Exception ex2)

{

return new Result<int>()

{

Success = false, Message = ex2.Message, StackTrace = ex2.StackTrace

};

}

return new Result<int>()

{

Success = false, Message = ex.Message, StackTrace = ex.StackTrace

};

}

finally

{

// Attempt to roll back the transaction.

try

{

connection.Close();

}

catch (Exception ex)

{

}

}

return new Result<int>()

{

Success = true, data = result

};

}

}

public static void Main(string[] args)

{

}

}

}

【c#实现数据库事务示例分享】相关文章:

c#实现用SQL池,多线程定时批量执行SQL语句的方法

c#数据类型基础

winfrom 在业务层实现事务控制的小例子

C#读取QQ纯真IP数据库QQWry.Dat的代码

如何让C#、VB.NET实现复杂的二进制操作

C#数据结构之循环链表的实例代码

用C#实现启动另一程序的方法实例

c#实现无标题栏窗口的拖动

c# 抓取Web网页数据分析

C#实现大数字运算的实例代码

精品推荐
分类导航