【ADO.NET】.NET事务应用-代码分享
2017-12-17 19:30
603 查看
.NET代码
SQLBulk应用
public static void InsertEntities(string connectionString, string TableName, DataTable dt) { using (SqlConnection conn = new SqlConnection(connectionString)) { conn.Open(); //增加事务 SqlTransaction trans = conn.BeginTransaction(); using (SqlBulkCopy sqlbulkcopy = new SqlBulkCopy(connectionString, SqlBulkCopyOptions.UseInternalTransaction)) { try { sqlbulkcopy.DestinationTableName = TableName; for (int i = 0; i < dt.Columns.Count; i++) { sqlbulkcopy.ColumnMappings.Add(dt.Columns[i].ColumnName, dt.Columns[i].ColumnName); } sqlbulkcopy.WriteToServer(dt); trans.Commit(); conn.Close(); } catch (System.Exception ex) { trans.Rollback(); conn.Close(); throw ex; } } } }
SQL通用
/// <summary> /// 执行多条SQL语句,实现数据库事务。 /// </summary> /// <param name="SQLStringList">SQL语句的哈希表(key为sql语句,value是该语句的SqlParameter[])</param> public static void ExecuteSqlTran(Hashtable SQLStringList) { using (SqlConnection conn = new SqlConnection(connectionString)) { conn.Open(); using (SqlTransaction trans = conn.BeginTransaction()) { SqlCommand cmd = new SqlCommand(); try { //循环 foreach (DictionaryEntry myDE in SQLStringList) { string cmdText = myDE.Key.ToString(); SqlParameter[] cmdParms = (SqlParameter[])myDE.Value; PrepareCommand(cmd, conn, trans, cmdText, cmdParms); int val = cmd.ExecuteNonQuery(); cmd.Parameters.Clear(); } trans.Commit(); } catch { trans.Rollback(); throw; } } } }
/// <summary> /// 执行多条SQL语句,实现数据库事务。 /// </summary> /// <param name="SQLStringList">SQL语句的哈希表(key为sql语句,value是该语句的SqlParameter[])</param> public static void ExecuteSqlTranWithIndentity(Hashtable SQLStringList) { using (SqlConnection conn = new SqlConnection(connectionString)) { conn.Open(); using (SqlTransaction trans = conn.BeginTransaction()) { SqlCommand cmd = new SqlCommand(); try { int indentity = 0; //循环 foreach (DictionaryEntry myDE in SQLStringList) { string cmdText = myDE.Key.ToString(); SqlParameter[] cmdParms = (SqlParameter[])myDE.Value; foreach (SqlParameter q in cmdParms) { if (q.Direction == ParameterDirection.InputOutput) { q.Value = indentity; } } PrepareCommand(cmd, conn, trans, cmdText, cmdParms); int val = cmd.ExecuteNonQuery(); foreach (SqlParameter q in cmdParms) { if (q.Direction == ParameterDirection.Output) { indentity = Convert.ToInt32(q.Value); } } cmd.Parameters.Clear(); } trans.Commit(); } catch { trans.Rollback(); throw; } } } }
相关文章推荐
- 在 ADO.Net 2.0 的中小型应用中,数据层代码是否还有存在的必要?
- 事务的作用和在ADO.NET中的应用
- 在 ADO.Net 2.0 的中小型应用中,数据层代码是否还有存在的必要?
- 【.Net基础】浅谈ADO.Net及其应用
- ADO.NET中事务的理解与应用
- 【分享】发两个关于.net反混淆未完的代码,半年多没动了,以后也可能不再玩儿.net了,共享出来供交流
- ASP.NET里的事务处理(ado.net 数据库应用)
- ASP.NET里的事务处理(ado.net 数据库应用)
- .NET开发中的事务处理大比拼 之 ADO.NET级别的事务
- .NET开发中的事务处理大比拼 之 ADO.NET级别的事务
- 分享 .NET(C#,VB.NET,ADO.NET)中取自增字段值的方法 SCOPE_IDENTITY()
- ASP.NET里的事务处理(ado.net 数据库应用)
- asp.net 页面应用了 Transaction="Required" 报错“无法执行事务处理代码。
- 使用系统表根据存储过程名字生成ADO.NET数据库访问代码
- .Net下使用Xml与ADO.net (摘至ADO.net技术内幕)
- 一起谈.NET技术,概括ADO.NET数据库连接的所有形式(基础)
- 翻译:改进.NET应用程序的性能和可伸缩性(一)-概述及ADO.NET 性能
- 一起谈.NET技术,使用VS2010代码分析功能增强ASP.NET应用程序安全
- mscorwks.dll在DotNet中的地位以及在.Net代码保护方面的应用
- ADO.NET访问数据-(2) DataSet本地缓存与数据库的交互过程,以及应用