C#中数据库事务、存储过程基本用法
SQL 事务
public bool UpdateQsRegisterSql(List<string> ids, int newQueueId, string newQueueName)
{
using (SqlConnection con = new SqlConnection(DBHelper.Instance.ConStr))
{
SqlTransaction tran = null;
try
{
con.Open();
SqlCommand cmd = con.CreateCommand();
tran = con.BeginTransaction(IsolationLevel.ReadCommitted);
cmd.Transaction = tran; foreach (string item in ids)
{
cmd.CommandText = @"update qs_register set queueid='" + newQueueId
+ "',queuename='" + newQueueName + "' where id='" + item + "'";
cmd.ExecuteNonQuery();
} tran.Commit();
return true;
}
catch (Exception ex)
{
tran.Rollback();
return false;
}
}
}
Oracle事务
public bool UpdateQsRegisterOrcl(List<string> ids, int newQueueId, string newQueueName)
{
using (OleDbConnection con = new OleDbConnection(DBHelper.Instance.ConStr))
{
OleDbTransaction tran = null;
try
{
con.Open();
OleDbCommand cmd = con.CreateCommand();
tran = con.BeginTransaction(IsolationLevel.ReadCommitted);
cmd.Transaction = tran; foreach (string item in ids)
{
cmd.CommandText = @"update qs_register set queueid='" + newQueueId
+ "',queuename='" + newQueueName + "' where id='" + item + "'";
cmd.ExecuteNonQuery();
} tran.Commit();
return true;
}
catch (Exception ex)
{
tran.Rollback();
return false;
}
}
}
Sql存储过程
/// <summary>
/// 直接登记
/// </summary>
/// <param name="hisExamno">申请单号</param>
/// <param name="enrolDoctor">登记医生</param>
/// <param name="engname">患者英文名称</param>
/// <param name="queueName">队列名称</param>
/// <returns></returns>
public bool DirectRegisterSql(string hisExamno, string enrolDoctor, string engname, string queueName)
{
using (SqlConnection conn = new SqlConnection(DBHelper.Instance.ConnectionStr))
{
conn.Open();
SqlCommand cmd = conn.CreateCommand();
try
{
//插入号源属性
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "PROC_HISEXAMTOENROL";
cmd.Parameters.Add("@p_HISEXAMNO", SqlDbType.VarChar).Value = hisExamno;
cmd.Parameters.Add("@p_ENROLDOCTOR", SqlDbType.VarChar).Value = enrolDoctor;
cmd.Parameters.Add("@p_ENGNAME", SqlDbType.VarChar).Value = engname;
cmd.Parameters.Add("@p_AppKind", OleDbType.VarChar).Value = PubVariable.Instance.CurrentDept;
cmd.Parameters.Add("@p_QueueName", OleDbType.VarChar).Value = queueName;
cmd.Parameters.Add("@p_result", SqlDbType.Int).Value = -1; if (cmd.ExecuteNonQuery() > 0) return true;
}
catch { return false; }
finally
{
if (conn.State != ConnectionState.Closed)
{
conn.Close();
}
}
}
return false;
}
Oracle存储过程
/// <summary>
/// 直接登记
/// </summary>
/// <param name="hisExamno">申请单号</param>
/// <param name="enrolDoctor">登记医生</param>
/// <param name="engname">患者英文名称</param>
/// <param name="queueName">队列名称</param>
/// <returns></returns>
public bool DirectRegisterOrcl(string hisExamno, string enrolDoctor, string engname, string queueName)
{
using (OleDbConnection conn = new OleDbConnection(DBHelper.Instance.ConnectionStr))
{
conn.Open();
OleDbCommand cmd = conn.CreateCommand();
try
{
//插入号源属性
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "PROC_HISEXAMTOENROL";
cmd.Parameters.Add("@p_HISEXAMNO", OleDbType.VarChar).Value = hisExamno;
cmd.Parameters.Add("@p_ENROLDOCTOR", OleDbType.VarChar).Value = enrolDoctor;
cmd.Parameters.Add("@p_ENGNAME", OleDbType.VarChar).Value = engname;
cmd.Parameters.Add("@p_AppKind", OleDbType.VarChar).Value = PubVariable.Instance.CurrentDept;
cmd.Parameters.Add("@p_QueueName", OleDbType.VarChar).Value = queueName;
cmd.Parameters.Add("@p_result", OleDbType.Integer).Value = -1; if (cmd.ExecuteNonQuery() > 0) return true;
}
catch { return false; }
finally
{
if (conn.State != ConnectionState.Closed)
{
conn.Close();
}
}
}
return false;
}
C#中数据库事务、存储过程基本用法的更多相关文章
- Net Core中数据库事务隔离详解——以Dapper和Mysql为例
Net Core中数据库事务隔离详解--以Dapper和Mysql为例 事务隔离级别 准备工作 Read uncommitted 读未提交 Read committed 读取提交内容 Repeatab ...
- SQL 数据库事务 存储过程练习
数据库事务: 数据库事务(Database Transaction) 是指作为单个逻辑工作单元执行的一系列操作. 事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源. ...
- asp.net中数据库事务管理
英文搜索关键字: 文章地址:https://stackoverflow.com/questions/313199/sql-transactions-best-way-to-implement-in-a ...
- 代码中添加事务控制 VS(数据库存储过程+事务) 保证数据的完整性与一致性
做人事档案的系统考虑到数据的安全性与一致性,毕竟是要对外上线.真正投入使用的项目,数据库的可靠性与安全性上我们开发人员要考虑的就很多了,记得做机房收费系统时注册新卡是自己为了简单,写成了一个存储过程( ...
- 存储过程中使用事务,sql server 事务,sql事务
一.存储过程中使用事务的简单语法 在存储过程中使用事务时非常重要的,使用数据可以保持数据的关联完整性,在Sql server存储过程中使用事务也很简单,用一个例子来说明它的语法格式: 代码 ...
- 存储过程中使用事务与try catch
一.存储过程中使用事务的简单语法 在存储过程中使用事务时非常重要的,使用数据可以保持数据的关联完整性,在Sql server存储过程中使用事务也很简单,用一个例子来说明它的语法格式: 代码 : ) ) ...
- ADO.NET中使用事务进行数据库读写的办法
使用事务一般是进行数据写入,数据读取一般是不需要这货的 第一种办法: 使用存储过程: 顾名思义,在存储过程中定义好变量,定义好事务开始,结束,错误回滚然后在ADO.NET中正常调用存储过程的方法就行 ...
- 存储过程中使用事务和try catch
一.存储过程中使用事务的简单语法 在存储过程中使用事务时非常重要的,使用数据可以保持数据的关联完整性,在Sql server存储过程中使用事务也很简单,用一个例子来说明它的语法格式: 代码 : Cre ...
- sql 在存储过程中使用事务(转)
本来想自己写一下,后来发现这个写的比我理解的要好,所以直接拽过来了,链接地址:https://www.cnblogs.com/RascallySnake/archive/2010/05/17/1737 ...
随机推荐
- [LeetCode&Python] Problem 661. Image Smoother
Given a 2D integer matrix M representing the gray scale of an image, you need to design a smoother t ...
- [LeetCode&Python] Problem 598. Range Addition II
Given an m * n matrix M initialized with all 0's and several update operations. Operations are repre ...
- 初学html的单词笔记
font-size: 文字大小color: 顏色solid: 边框线text-align: 間距center: 文字放在中間<head> 网页头部<title> 网页标题< ...
- Bagging-Adaboost-RF的粗糙理解
三种方法都是组合方法,组合方法是使用多个分类器进行投票[构造每个分类器的样本都是通过有放回抽样得到的] 1.Bagging(装袋):k次抽样,训练k次,得到k个模型(分类器),等权重投票 2.Adab ...
- Codeforces483B. Friends and Presents(二分+容斥原理)
题目链接:传送门 题目: B. Friends and Presents time limit per test second memory limit per test megabytes inpu ...
- 项目报错 exception 'MongoConnectionException' with message 'Failed to connect to: 127.0.0.1:27017: Authentication failed on database 'www' with username 'www': auth failed' in
出现这个错误,在官方文档也找到了解释,原来在2.6版本做了很大的改进,其改进涉及到核心.存储.网络.查询和安全性等多方面,自然,其用户登录认证机制也发生了改变,db.system.users的sche ...
- 【HDOJ3018】【一笔画问题】【欧拉回路+并查集】
http://acm.hdu.edu.cn/showproblem.php?pid=3018 Ant Trip Time Limit: 2000/1000 MS (Java/Others) Me ...
- R49 A-D D图有向有环图
A. Palindromic Twist 给一个字符串(小写字母) 每个字符+1,-1:变成其他字符 a只能变b z只能变y 看能否变成回文字符串 #include<bits/stdc+ ...
- 《DSP using MATLAB》Problem 5.17
1.代码 %% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ %% ...
- 重拾C++第一天_WDS
1.面向对象编程的三大特点:封装.继承.多态 2.C++中若不指定类中成员的访问权限默认就是private的(class默认是private的,struct默认是public的). 3.C++规范中类 ...