手机
当前位置:查字典教程网 >编程开发 >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#读取QQ纯真IP数据库QQWry.Dat的代码

C#连接db2数据库的实现方法

使用C#实现RTP数据包传输 参照RFC3550

C#实现协同过滤算法的实例代码

c#实现sunday算法实例

c# 抓取Web网页数据分析

c#固定长度的随机字符串例子

C#常用正则大全分享

C#自动创建数据库实现代码

c# 开机启动项的小例子

精品推荐
分类导航