SqlConnection connection = myConnection.getConnection();
connection.Open();
SqlCommand CMD = new SqlCommand();
CMD.CommandType = CommandType.StoredProcedure;
SqlTransaction tran = connection.BeginTransaction();
CMD.Transaction = tran; try
{ CMD.CommandText = "insertUserMDB";
myCommand.Parameters.Add("@UserID", SqlDbType.NVarChar, 50);
myCommand.Parameters["@UserID"].Value = UserID;//用户ID
CMD.CommandText="UpdateUserGDB";
myCommand..........
myCommand..........
myCommand..........
sqlTran.Commit();
}
catch
{
tran.Rollback();
}
finnaly
{
connection.Close();
}
---------------------------------------
问题:在 try里面的存储过程很多,看起来就很凌乱
请问能否把他写成某种方法进行调用
比方CMD.CommandText="user.Insert(UserID)";//这个肯定不对,只是这样的形式
等待您的回复!
解决方案 »
- repeater分页部分代码问题
- 请问Page
- 研究过ASP.NET MVC的朋友请进来看看
- 像CSDN中的relation tag 的算法是如何实现的呀?
- 高数请求帮忙!!!----统计在线人数!
- 求救,使用ADO.NET保存数据到ORACLE库中后,数据发生很不正常的错误
- 各位我只有20分,帮我看看,数据导出的问题。。
- 地址栏问题
- 谁有或者能推荐一个.net 1.1 C# 的整站程序
- 最近我发现很多人挺关心弹出“确定”“取消”的东西的,,下面是一个简单的例子:
- vs2005下的gridview运行后的html中会加入rules="all",如何去掉,谢谢
- "该字符串未被识别为有效的布尔值"的问题
con.ConnectionString=ConfigurationManager.ConnectionStrings["DSN"].ConnectionString;
con.Open();
//启动一个事务。
SqlTransaction myTran = con.BeginTransaction();
//为事务创建一个命令,注意我们执行双条命令,第一次执行当然成功。我们再执行一次,失败。
//第三次我们改其中一个命令,另一个不改,这时候事务会报错,这就是事务机制。
SqlCommand myCom = new SqlCommand();
myCom.Connection = con;
myCom.Transaction = myTran;
try
{
myCom.CommandText = "insert into SqlAction values ('测试2','111')";
myCom.ExecuteNonQuery();
myCom.CommandText = "insert into SqlAction values ('测试3','111')";
myCom.ExecuteNonQuery();
myTran.Commit();
Response.Write("成功执行");
}
catch (Exception Ex)
{
myTran.Rollback();
//创建并且返回异常的错误信息
Response.Write(Ex.ToString());
Response.Write("写入数据库失败");
}
finally
{
con.Close();
}
}
}
{
pweb_SQL pwebsql = new pweb_SQL();
pweb_user pwebuser = new pweb_user();
pwebsql.Comm.Transaction = pwebsql.Conn.BeginTransaction();
try
{
int row = pwebsql.Comm.ExecuteNonQuery();
//提交事务
pwebsql.Comm.Transaction.Commit(); if (rows >= 0 && row >= 0)
{
return true;
}
else
{
return false;
}
}
catch
{
//回滚事务
pwebsql.Comm.Transaction.Rollback();
hotelID = 0;
return false;
} }
public bool AddHotel(Hotel hotel,string username,string password,out int hotelID)
{
pweb_SQL pwebsql = new pweb_SQL();
pweb_user pwebuser = new pweb_user();
pwebsql.Comm.Transaction = pwebsql.Conn.BeginTransaction();
try
{
int row = pwebsql.Comm.ExecuteNonQuery();
//提交事务
pwebsql.Comm.Transaction.Commit(); if (rows >= 0 && row >= 0)
{
return true;
}
else
{
return false;
}
}
catch
{
//回滚事务
pwebsql.Comm.Transaction.Rollback();
hotelID = 0;
return false;
} }
然后调用这个方法
你的这样完成是单个回滚,我要实现多个完成后才回滚!
public bool AddHotel(Hotel hotel,string username,string password,out int hotelID)
{
pweb_SQL pwebsql = new pweb_SQL();
pweb_user pwebuser = new pweb_user();
pwebsql.Comm.Transaction = pwebsql.Conn.BeginTransaction();
try
{
int row = pwebsql.Comm.ExecuteNonQuery();
//提交事务
pwebsql.Comm.Transaction.Commit(); if (rows >= 0 && row >= 0)
{
return true;
}
else
{
return false;
}
}
catch
{
//回滚事务
pwebsql.Comm.Transaction.Rollback();
hotelID = 0;
return false;
} }
比如你实例化了一个user,然后执行方法 bll.add(user)你想在现有基础上加上事务处理,希望的是这样的写法对吧
x.BeginTrans();
bll.add(user);
y.Errors==0? x.Rollback:x.commit..经过几层转换了,这个希望不现实,另外,add方法里调用的connection你不可能一直保存吧,
或者你在 add之前,实例化一个connection,再把connection做为参数放在add方法里.
实现是可以的,但结构全被打乱了,这种做法很不好.
存储过程加多一个输出参数, 当rollback时将此参数置0,否则(即commit)置1, add方法取这个参数值就可以了.
有点建设性意见
此贴无满意答案!
为给分结贴!