ADO执行事务
在工作中遇到,需要批量提交的。在sql2008以后有表变量定义,可以实现。但个人比较习惯用C#,就有下面代码,直接上代码。。。
using (SqlConnection conn = new SqlConnection(Conn.Connection))
{
conn.Open();
SqlCommand comm = new SqlCommand() { Connection = conn };
SqlTransaction tran = conn.BeginTransaction();
comm.Transaction = tran;
try
{
comm.CommandType = CommandType.StoredProcedure;
comm.CommandText = "tb_role_INSERT";
SqlParameter[] parms = new SqlParameter[] {
new SqlParameter {ParameterName="@code",Value=array[0].ToString(),SqlDbType=SqlDbType.NVarChar, Size = 100 },
new SqlParameter {ParameterName="@name",Value=array[1].ToString(),SqlDbType=SqlDbType.NVarChar, Size = 500 },
new SqlParameter {ParameterName="@remark",Value=array[2].ToString(),SqlDbType=SqlDbType.NText},
new SqlParameter {ParameterName="@create_time",Value=DateTime.Now,SqlDbType=SqlDbType.DateTime},
new SqlParameter {ParameterName="@create_user_id",Value=Lib.ReadCookie("UserID"),SqlDbType=SqlDbType.Int},
new SqlParameter {ParameterName="@is_active",Value=1,SqlDbType=SqlDbType.Int},
new SqlParameter {ParameterName="@manufacturer_id",Value=Lib.ReadCookie("ManuID"),SqlDbType=SqlDbType.Int},
new SqlParameter {ParameterName="@custid",Value=Lib.ReadCookie("CustID"),SqlDbType=SqlDbType.Int},
new SqlParameter{ParameterName="@tb_roleID",Direction=ParameterDirection.Output,SqlDbType=SqlDbType.Int},
};
comm.Parameters.AddRange(parms);
comm.ExecuteNonQuery();
int id = Convert.ToInt32(comm.Parameters["@tb_roleID"].Value);
ArrayList sqlList = GetRolePermissionList(id, array[7].ToString());
for (int i = 0; i < sqlList.Count; i++)
{
string str2 = sqlList[i].ToString();
if (str2.Trim().Length > 1)
{
comm.CommandType = CommandType.Text;
comm.CommandText = str2;
comm.ExecuteNonQuery();
}
}
tran.Commit();
}
catch (SqlException ex)
{
tran.Rollback();
messge = ex.Message;
}
}
ADO执行事务的更多相关文章
- ADO.NET 事务控制
在ADO.NET 中,可以使用Connection 和Transaction 对象来控制事务.若要执行事务,请执行下列操作: 1.调用Connection 对象的BeginTransaction 方法 ...
- SqlServer批量刷数据执行事务回滚语句备份
企业进行对数据库执行刷数据工作,一段很长的语句希望同时成功或者失败时用到. 1.建立测试环境 /**************************************************** ...
- ADO.NET事务
在发布System.Transaction命名空间之前,可以直接用ADO.NET创建事务,也可以通过组件.特性和COM+运行库(位于System.EnterpriseServices命名空间中)进行事 ...
- 详解MySQL执行事务的语法和流程
摘要:MySQL 提供了多种存储引擎来支持事务. MySQL 提供了多种存储引擎来支持事务.支持事务的存储引擎有 InnoDB 和 BDB,其中,InnoDB 存储引擎事务主要通过 UNDO 日志和 ...
- Spring @Transaction 注解是如何执行事务的?
前言 相信小伙伴一定用过 @Transaction 注解,那 @Transaction 背后的秘密又知道多少呢? Spring 是如何开启事务的?又是如何进行提交事务和关闭事务的呢? 画图猜测 在开始 ...
- 【记录一个问题】redis中执行事务出现错误“EXECABORT Transaction discarded because of previous errors”
执行事务的大致代码如下: redisClient := GetRedisClient() pipe := redisClient.TxPipeline() err := pipe.ZAdd(k, ar ...
- ADO.NET笔记——执行事务
相关知识: 处于同一事务(Transaction)内的一组操作,要么都成功执行,最后完全提交:但如果只要有任何一个操作失败或者出问题,所有值钱执行的操作也都取消并恢复到初始状态(即回滚) SqlTra ...
- SQL Server 2008 R2——VC++ ADO 操作 事务
==================================声明================================== 本文原创,转载在正文中显要的注明作者和出处,并保证文章的完 ...
- ADO.NET事务封装
在数据库工具类编写的过程中,对事务的处理操作想避免各个原子操作的事务对象赋值重复操作,想对外暴露的方法为如下形式 public bool ExecuteTransition(Action Transi ...
随机推荐
- 使用VBSCRIPT安装字体
根据新系统要求,经常要部署一些原来系统里没有的字体,原先我为了图省事经常会要求用户手动安装字体文件,虽然Windows的易用性做得相当不错,但是仍然要照顾一些不会安装字体的人,其实把这些字体打包进安装 ...
- 通过id设置的css属性和通过元素设置的css属性冲突了,优先级哪个高?
---恢复内容开始--- <!DOCTYPE html> <html> <head> <title>div test</title> < ...
- Damn Couples ZOJ - 3161
传送门 题目大意 N个人,M组关系,每次选一种关系,如果两个人相邻,则任意删除其中一个,否则不变.问最坏情况下最多能剩多少人. 分析 为了留的人最多,我们可以先将原来不相邻的关系全部说完,这样我们只需 ...
- java Iterator类
查看java源码. /* * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. * ORACLE ...
- AJAX的dataType问题
dataType是预期服务器返回的数据类型.如果不指定,jQuery 将自动根据 HTTP 包 MIME 信息来智能判断,比如 XML MIME 类型就被识别为 XML.在 1.4 中,JSON 就会 ...
- 《Maven实战》笔记-2-坐标和依赖
一.依赖范围 Maven在编译项目主代码的时候,需要使用一套classpath——编译classpath: 在编译和执行测试的时候,使用另一套classpath——测试classpath: 实际运行M ...
- 水平居中的那些事之解决jqpagination分页插件无法居中的问题
固定宽度的元素水平居中只需要 margin-left:auto: margin-right:auto; 换成 margin:0 auto; 也是一样的 今天给我用的jqPagination分页插件实现 ...
- python(一):作用域
与c相比,python作用域很奇特. 在Python中变量的作用域是由它在源代码中的位置决定的,这一点与c相似. python只支持4种作用域,即局部作用域,全局作用域,内置作用域,嵌套作用域. 比较 ...
- Django之后台管理一
所有的网站都有一个管理后台来对所有的网站数据进行管理.那么Django的后台管理是如何进行的.在网页中输入http://127.0.0.1:8001/admin.得到如下的登录界面 在这里可以看到管理 ...
- 【图灵学院10】高并发之java线程池源码分析
1. 提纲 1)线程池的模块结构 2)示例&原理解析 2. 问题 1)线程池包含哪些东西 2)线程池的运作原理 3)调度线程池的运作原理 4)线程池怎么实现FixRate,FixDelay,他 ...