| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 501 人关注过本帖
标题:[求助]关于事务处理
只看楼主 加入收藏
tkgg888
Rank: 1
等 级:新手上路
帖 子:341
专家分:2
注 册:2006-4-24
收藏
 问题点数:0 回复次数:8 
[求助]关于事务处理
在asp.net中怎样运用事务处理??
能传个小例子最好!!
谢谢!
搜索更多相关主题的帖子: 事务 
2006-12-12 11:59
tkgg888
Rank: 1
等 级:新手上路
帖 子:341
专家分:2
注 册:2006-4-24
收藏
得分:0 

2006-12-12 12:15
share2227
Rank: 1
等 级:新手上路
帖 子:90
专家分:0
注 册:2006-12-6
收藏
得分:0 
不懂 学习
2006-12-12 13:39
tkgg888
Rank: 1
等 级:新手上路
帖 子:341
专家分:2
注 册:2006-4-24
收藏
得分:0 
在线等

2006-12-12 14:18
miaobing2008
Rank: 1
等 级:新手上路
帖 子:43
专家分:0
注 册:2006-9-19
收藏
得分:0 

和普通的用法一樣,自己寫個Function;不是很複雜,下面是我用到的一個例子;希望對你有所幫助
public DataSet ExecuteDataSet()
{
if(arr_DBCommandWrapper==null || arr_DBCommandWrapper.Count<1) return null;

DataSet o_Ds=new DataSet();
using(I_DbConn=o_Database.GetConnection())
{
I_DbConn.Open(); //打開接鏈
I_DbTran=I_DbConn.BeginTransaction(); //開啟事務
DataSet o_DsTemp;

try
{
foreach(DBCommandWrapper o_DBCommandWrapper in arr_DBCommandWrapper)
{
if(GetSQLType(o_DBCommandWrapper.Command.CommandText)==SQLType.Query)
{
o_DsTemp=o_Database.ExecuteDataSet(o_DBCommandWrapper,I_DbTran);
if(!(o_DsTemp==null || o_DsTemp.Tables.Count<1))
{
o_Ds.Tables.Add(o_DsTemp.Tables[0].Copy());
}
}
else
{
o_Database.ExecuteNonQuery(o_DBCommandWrapper,I_DbTran);
}
}
I_DbTran.Commit(); //提交事務
}
catch
{
I_DbTran.Rollback(); //回滾
throw;
}
finally
{
I_DbConn.Close();
}
}
b_Run=true; //表示事務已經執行完成
return o_Ds;
}

2006-12-12 16:12
miaobing2008
Rank: 1
等 级:新手上路
帖 子:43
专家分:0
注 册:2006-9-19
收藏
得分:0 

上面是以事務方式執行DBCommandWrapper.返回執行結果DataSet
還有一個逐筆執行事務的例子
public void ExecuteDataStep()
{
if(arr_DBCommandWrapper==null || arr_DBCommandWrapper.Count<1) return;

DataSet o_Ds=new DataSet();
using(I_DbConn=o_Database.GetConnection())
{
I_DbConn.Open(); //打開接鏈
I_DbTran=I_DbConn.BeginTransaction(); //開啟事務
Hashtable o_hasParameterName=null; //參數
string s_FieldName=string.Empty;
int i_Ero=0;
try
{

foreach(DBCommandWrapper o_DBCommandWrapper in arr_DBCommandWrapper)
{
i_Ero++;
if(this.GetSQLType(o_DBCommandWrapper.Command.CommandText)==SQLType.Query)
{
o_Ds=o_Database.ExecuteDataSet(o_DBCommandWrapper,I_DbTran) ;
}
else
{
o_hasParameterName=FindParameter(o_DBCommandWrapper);
if(o_hasParameterName == null || o_hasParameterName.Count==0 || o_Ds.Tables.Count<1)
{
o_Database.ExecuteNonQuery( o_DBCommandWrapper,I_DbTran) ;
}
else
{
IDictionaryEnumerator I_Enum=o_hasParameterName.GetEnumerator();
while(I_Enum.MoveNext())
{
s_FieldName=I_Enum.Value.ToString().Substring(2,I_Enum.Value.ToString().Length-2);
if(o_Ds.Tables[0].Columns[s_FieldName]!=null)
{
o_DBCommandWrapper.SetParameterValue(I_Enum.Key.ToString(),DataCheck.GetFieldValue(o_Ds,s_FieldName));
}
}
o_Database.ExecuteNonQuery( o_DBCommandWrapper,I_DbTran) ;
o_Ds.Tables.Clear();
}
}
}
I_DbTran.Commit(); //提交事務
}
catch(System.Exception ex)
{
ex.ToString();
i_Ero.ToString() ;
I_DbTran.Rollback(); //回滾
throw;
}
finally
{
I_DbConn.Close();
}
}
b_Run=true; //表示事務已經執行完成
}

2006-12-12 16:17
tkgg888
Rank: 1
等 级:新手上路
帖 子:341
专家分:2
注 册:2006-4-24
收藏
得分:0 
谢啦

2006-12-12 16:22
tkgg888
Rank: 1
等 级:新手上路
帖 子:341
专家分:2
注 册:2006-4-24
收藏
得分:0 
“I_DbTran”是什么类型??
用executenonquery()怎么实现??

2006-12-12 16:49
tkgg888
Rank: 1
等 级:新手上路
帖 子:341
专家分:2
注 册:2006-4-24
收藏
得分:0 
我晕死啦,我给忘记了oledbconnection不支持事务处理呀!!

2006-12-12 17:07
快速回复:[求助]关于事务处理
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018045 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved