社区
C#
帖子详情
方法的事务处理或一个集作为参数传给存储过程
yuesongboy
2007-01-23 03:55:25
谁能回答?分不够,我再加150分~~
问题一:
A层为表示层--> B层为数据操作-->C层数据操作通用层-->D数据库
以上层次
我A中调用方法B,注意B没有使用ADO.NET,但现在我的A在操作B的时候,我有可能执行
多个B方法,这些方法是操作数据的,
我想在A中实现事务,还能实现吗?
如果不行,那就请教问题二
问题二:
把一个List<>之类的集如何作为参数传到存储过程,存储过程又是如何来
遍历它?
...全文
214
6
打赏
收藏
方法的事务处理或一个集作为参数传给存储过程
谁能回答?分不够,我再加150分~~ 问题一: A层为表示层--> B层为数据操作-->C层数据操作通用层-->D数据库 以上层次 我A中调用方法B,注意B没有使用ADO.NET,但现在我的A在操作B的时候,我有可能执行 多个B方法,这些方法是操作数据的, 我想在A中实现事务,还能实现吗? 如果不行,那就请教问题二 问题二: 把一个List之类的集如何作为参数传到存储过程,存储过程又是如何来 遍历它?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
liujia_0421
2007-01-23
打赏
举报
回复
对于问题一:
能不能用事务还得看具体情况,要保证你的所有方法中用的是同一个Connection,在调用方法之前用这个Connection开启一个事务,方法中的所有Command的Transaction都要设置成同一个事务(即由前面的Connection开启的事务)..只有这样才可以..
也就是说想做在一个事务里的所有Command都共一个Transaction..
for example:
SqlConnection con=new SqlConnection("..");
SqlTransaction tran=con.BeginTransaction();
SqlCommand cmd1=new SqlCommand("..",con);
cmd1.Transaction=tran;
SqlCommand cmd2=new SqlCommand("..",con);
cmd2.Transaction=tran;
....
//执行
....
//如果没有异常tran.Commit();
//如果有异常tran.RollBack();
...
TO:问题二
我也觉得这样的逻辑最好不要交给数据库来处理,效率低,也不利于管理 ...
hertcloud
2007-01-23
打赏
举报
回复
hbxtlhx(平民百姓) ( ) 信誉:112 Blog 2007-1-23 16:01:06 得分: 0
问题一可以实现,它的实现可以来自SqlConnection.BeginTransaction 方法的实现,用这个方法开始一个事务,可以用Commit事务,也可RollBack事件.
第二个问题也可以解决,不过不是直接把List<>传到存储过程,而是把这个List<>组织成一个字符串,或Xml字符串,这样用Sql的系统存储过程来分析它.
这个说的不错
不过第二个 我想 这样的逻辑处理还是不交给Sql为妙
毕竟程序是人写的 易于维护和理解 也很重要 我相信不在Sql里面楼主需要的功能肯定也可以实现
北京的雾霾天
2007-01-23
打赏
举报
回复
BeginTransaction不只有SqlConnection有,其它的连接对象也是有的.你可以用OleDB的,也有这样的方法.
如果你在你的A中没有涉及到对Connection的操作,那么BeginTransaction这样的方法也就不会起作用了.
如果真的是这样的话,那最好把事务的操作放到存储过程之类的数据库服务端,这样由数据库来对事务操作.
yuesongboy
2007-01-23
打赏
举报
回复
@hbxtlhx(平民百姓)
我的C层是封装好的,我也不想改就业我的B层,只想在A层中实现事务,问题时,我如果现在实现SqlConnection.BeginTransaction是否有用?本身我的系统可以能过配置转到其它数据库,如果写死了,不是不利?
@james_hunter(辉)
暂时不用NHibernate等orm工具
james_hunter
2007-01-23
打赏
举报
回复
我们一般在自己的项目中,使用NHibernate等持久化工具来维持高层的事务支持,类似这些工具,构建事务对象,并将事物对象构造在表示层(其实一般是逻辑层)中,虽然增加了不同层次的耦合,但是并没有太大坏处。
关于向数据库传递复杂对象,我想只要可以序列化,就没有问题吧。
北京的雾霾天
2007-01-23
打赏
举报
回复
问题一可以实现,它的实现可以来自SqlConnection.BeginTransaction 方法的实现,用这个方法开始一个事务,可以用Commit事务,也可RollBack事件.
第二个问题也可以解决,不过不是直接把List<>传到存储过程,而是把这个List<>组织成一个字符串,或Xml字符串,这样用Sql的系统存储过程来分析它.
JAVA中事务的使用与原理专题(附源码和讲义)
本课程将对事务做一个专题进行讲解,主要包括事务的应用场景的,事务的特性。Java中事务的事务方式、Spring框架中事务的基本使用与实现原理,另外重点讲解了分布式事务的应用场景和常见的分布式事务解决方案。 &...
数据库事务&
存储过程
一、【事务概念】 事务(Transaction)是指构成单一逻辑工作单元的操作集合,要么完整地执行,要么完全不执行。 1,如果事务中有的操作没有成功完成,则事务中的所有操作都需要被回滚,回到事务执行前的状态(要么...
MySQL——
存储过程
详解及实例分析
一、储存过程简介 1、什么是
存储过程
2、
存储过程
优缺点 3、
存储过程
入门程序 4、在idea中如何调用储存过程? 二、
存储过程
编程 1、
存储过程
的变量 2、
存储过程
中的
参数
3、选择结构if 4、分支结构case 5...
【MySQL必知必会】
存储过程
| 游标
参数
IN表示输入的
参数
,
存储过程
只是读取这个
参数
的值。如果没有定义
参数
种类,默认就是IN,表示输入
参数
。OUT表示输出的
参数
,
存储过程
在执行的过程中...这个
参数
的用处是告诉
存储过程
,我要处理的是哪一天的数据。...
Oracle
存储过程
及
参数
理解
过程是一个能执行某个特定操作的子程序。使用CREATE OR REPLACE创建或者替换保存在数据库中的一个子程序。 示例1:声明
存储过程
,该过程返回dept表行数 DECLARE PROCEDURE getDeptCount AS deptCount INT; ...
C#
110,538
社区成员
642,577
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章