.net 里不是有BeginTrans();CommitTrans();RollbackTrans();么?
解决方案 »
- IIS 安全性异常错误
- 有需要电子书的请到这里下吧(非广告,觉得实用才给大家发的。)
- ajax 刷新问题
- 出现矛盾?该怎么办?在线等!!!
- 请教:在OA审批流程中若涉及多部门.那么流程如何做?如请假单,先是各部门主管审批,再是各部门经理审批.这样的话若有10个部门那么就要做好10
- ●●●一起谴责微软的烂东西:试图运行项目时出错: 无法在 Web 服务器上启动调试。您没有调试该服务器的权限。●●●
- 谁知此段程序是什么意思????
- 能否在配置文件中自定义元素,然后遍历元素中的内容。谢谢!
- 新建ASP.net项目,提示“计算机上没有运行Web服务器”
- 怎么使用是数据源,送高分
- 请问怎么在DataList上鼠标移到哪行,哪行变颜色
- System.Data.OleDb.OleDbDataReader"并不包含对"Item"的定义???
{
OleDbConnection myConnection = new OleDbConnection(myConnString);
myConnection.Open(); OleDbCommand myCommand = new OleDbCommand();
OleDbTransaction myTrans; // Start a local transaction
myTrans = myConnection.BeginTransaction(IsolationLevel.ReadCommitted);
// Assign transaction object for a pending local transaction
myCommand.Connection = myConnection;
myCommand.Transaction = myTrans; try
{
myCommand.CommandText = "Insert into Region (RegionID, RegionDescription) VALUES (100, 'Description')";
myCommand.ExecuteNonQuery();
myCommand.CommandText = "Insert into Region (RegionID, RegionDescription) VALUES (101, 'Description')";
myCommand.ExecuteNonQuery();
myTrans.Commit();
Console.WriteLine("Both records are written to database.");
}
catch(Exception e)
{
myTrans.Rollback();
Console.WriteLine(e.ToString());
Console.WriteLine("Neither record was written to database.");
}
finally
{
myConnection.Close();
}
}
谢谢。 但我使用了一个类封装了ADO操作。我可以让执行不满足条件时抛出一个EXCEPTION,有没有在页面上进行事务处理的语句。
CREATE PROCEDURE dbo.xxxx
..............
AS DECLARE @_IS_BARGAIN CHAR(1)
--开始事务
BEGIN TRAN JASON
--更新
UPDATE BID_ProductClass
SET BARGAIN_TIME_START = @BARGAIN_TIME_START,
BARGAIN_TIME_END = @BARGAIN_TIME_END , @_IS_BARGAIN = IS_BARGAIN
WHERE (ID = @ID)
.......
--提交事务
IF @@ERROR <> 0
GOTO ERRORHANDLE
COMMIT TRAN JASON
RETURN 0
--回滚事务
ERRORHANDLE:
ROLLBACK TRAN JASON
COMMIT TRAN JASON
RETURN 1
数据库级别的就是楼上的那样最后是页面级别的,导入名称空间system.enterpriseservices
用静态方法
在try的末尾用contextutil.setcomplete()
在catch的末尾用contextuitl.setabort()
如意这个名称控件不是默认的,必须添加引用,然后在codegehind里导入,vb:import c#:using
http://blog.csdn.net/billy_zh/archive/2004/07/17/43748.aspx
一种比较通用的出错处理的模式大概如下:
Create procdure prInsertProducts
(
@intProductId int,
@chvProductName varchar(30),
@intProductCount int
)
AS
Declare @intErrorCode int
Select @intErrorCode=@@Error
Begin transaction
if @intErrorCode=0
begin
-insert products
insert products(ProductID,ProductName,ProductCount)
values(@intProductId,@chvProductName,@intProductCount)
Select @intErrorCode=@@Error --每执行完一条t-sql语句马上进行检测,并把错误号保存到局部变量中
end
if @intErrorCode=0
begin
-update products
update products set ProductName='MicroComputer' where ProductID=5
Select @intErrorCode=@@Error
end
if @intErrorCode=0
commit transaction
else
rollback transaction Return @intErrorCode --最好返回错误代号给调用的存储过程或应用程序2,.Net中使用事务处理
SqlConnection myConnection = new SqlConnection("Data Source=localhost;Initial Catalog=Northwind;Integrated Security=SSPI;");
myConnection.Open(); SqlTransaction myTrans = myConnection.BeginTransaction(); //使用New新生成一个事务
SqlCommand myCommand = new SqlCommand();
myCommand.Transaction = myTrans; try
{
myCommand.CommandText = "Update Address set location='23 rain street' where userid='0001'";
myCommand.ExecuteNonQuery();
myTrans.Commit();
Console.WriteLine("Record is udated.");
}
catch(Exception e)
{
myTrans.Rollback();
Console.WriteLine(e.ToString());
Console.WriteLine("Sorry, Record can not be updated.");
}
finally
{
myConnection.Close();
}
2、我认为可以用存储过程,只是可能要复杂一点
myConnection.Open(); SqlCommand myCommand = myConnection.CreateCommand();
SqlTransaction myTrans; // Start a local transaction
myTrans = myConnection.BeginTransaction();
// Must assign both transaction object and connection
// to Command object for a pending local transaction
myCommand.Connection = myConnection;
myCommand.Transaction = myTrans; try
{
myCommand.CommandText = "Insert into Region (RegionID, RegionDescription) VALUES (100, 'Description')";
myCommand.ExecuteNonQuery();
myCommand.CommandText = "Insert into Region (RegionID, RegionDescription) VALUES (101, 'Description')";
myCommand.ExecuteNonQuery();
myTrans.Commit();
Console.WriteLine("Both records are written to database.");
}
catch(Exception e)
{
try
{
myTrans.Rollback();
}
catch (SqlException ex)
{
if (myTrans.Connection != null)
{
Console.WriteLine("An exception of type " + ex.GetType() +
" was encountered while attempting to roll back the transaction.");
}
}
Console.WriteLine("An exception of type " + e.GetType() +
" was encountered while inserting the data.");
Console.WriteLine("Neither record was written to database.");
}
finally
{
myConnection.Close();
}