唐山网站建设

设为主页 加入收藏 繁體中文

ASP.NET里的事务处理

核心提示:事务是1组组合成逻辑工作单元的数据库操纵,固然系统中可能会出错,但事务将控制和保护每个数据库的1致性和完全性。

事务是1组组合成逻辑工作单元的数据库操纵,固然系统中可能会出错,但事务将控制和保护每个数据库的1致性和完全性。假设在事务进程中没有碰到毛病,事务中的所有修改都将永久成为数据库的1部份。假设碰到毛病,则不会对数据库作出任何修改。

例如,在1个银行利用程序中,假设资金从1个帐户转到另1个帐户,则会将1定的金额记进1个帐户的贷方,同时将相同的金额记进另1个帐户的借方。由于计算机可能会由于停电、网络中断等缘由此出现故障,所以有可能更新了1个表中的行,但没有更新相干表中的行。假设数据库支持事务,则可以将数据库操纵组成1个事务,以避免因这些事件而使数据库出现不1致。

在 ADO.NET 中,可使用 Connection 和 Transaction 对象来控制事务。若要履行事务,请履行以下操纵:

调用 Connection 对象的 BeginTransaction 方法来标记事务的开始。BeginTransaction 返回对 Transaction 的援用。请保存此援用,以便将其分配给在事务中登记的 Command。

将 Transaction 对象分配给要履行的 Command 的 Transaction 属性。假设通过活动的 Transaction 对象对 Connection 履行 Command,但该 Transaction 对象还没有分配给 Command 的 Transaction 属性,则将引发异常。

履行所需的命令。

调用 Transaction 对象的 Commit 方法来完成事务,或调用 Rollback 方法来取消事务。

以下代码示例使用 Microsoft? SQL Server? 上的 ADO.NET 来演示事务逻辑。

以下为援用的内容:

SqlConnection myConnection = new SqlConnection("Data Source=localhost;Initial Catalog=Northwind;Integrated Security=SSPI;");
myConnection.Open();
// 启动1个事务
SqlTransaction myTrans = myConnection.BeginTransaction();

// 为事务创建1个命令
SqlCommand myCommand = new SqlCommand();
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();
}

http://www.fw8.net/
TAG:数据库,帐户,可能会,对象,事务
评论加载中...
内容:
评论者: 验证码: