.NET开发中的事务处理大比拼 之 ADO.NET级别的事务
来源:互联网 发布:java xmlencoder 编辑:程序博客网 时间:2024/05/16 06:49
现在我们对事务的概念和原理都有所了解了,并且作为已经有一些基础的C#开发者,我们已经熟知编写数据库交互程序的一些要点,即:
(1)使用SqlConnection类的对象的Open()方法建立与数据库服务器的连接。
(2)然后将该连接赋给SqlCommand对象的Connection属性。
(3)将欲执行的SQL语句赋给SqlCommand的CommandText属性。
(4)通过SqlCommand对象进行数据库操作。
创建一个ADO.NET事务是很简单的,需要定义一个SqlTransaction类型的对象。SqlConnection 和OleDbConnection对象都有一个 BeginTransaction 方法,它可以返回 SqlTransaction 或者OleDbTransaction 对象。然后赋给SqlCommand对象的Transcation属性,即实现了二者的关联。为了使事务处理可以成功完成,必须调用SqlTransaction对象的Commit()方法。如果有错误,则必须调用Rollback()方法撤销所有的操作。
代码示例:
基于以上认识,下面我们就开始动手写一个基于ADO.NET的事务处理程序。(示例位置:光盘\code\ch05\04\Web\WebForm2)
string conString = "data source=127.0.0.1;database=codematic;user id=sa;
password=";
SqlConnection myConnection = new SqlConnection(conString);
myConnection.Open();
//启动一个事务
SqlTransaction myTrans = myConnection.BeginTransaction();
//为事务创建一个命令
SqlCommand myCommand = new SqlCommand();
myCommand.Connection = myConnection;
myCommand.Transaction = myTrans;
try
{
myCommand.CommandText = "update P_Product set Name='电脑2' where Id=52";
myCommand.ExecuteNonQuery();
myCommand.CommandText = "update P_Product set Name='电脑3' where Id=53";
myCommand.ExecuteNonQuery();
myTrans.Commit();// 提交
Response.Write("两条数据更新成功");
}
catch (Exception ex)
{
myTrans.Rollback();// 遇到错误,回滚
Response.Write(ex.ToString());
}
finally
{
myConnection.Close();
}
ADO.NET事务的优势和限制如下。
优势:
l 简单。
l 和数据库事务差不多快。
l 事务可以跨越多个数据库访问。
l 独立于数据库,不同数据库的专有代码被隐藏了。
限制:事务执行在数据库连接层上,所以需要在执行事务的过程中手动地维护一个连接。
注 意
所有命令都必须关联在同一个连接实例上,ADO.NET事务处理不支持跨多个连接的事务处理。
选自《亮剑.NET. .NET深入体验与实战精要》一书 5.4 节。
(1
(2
(3
(4
创建一个ADO.NET
代码示例:
基于以上认识,下面我们就开始动手写一个基于ADO.NET
string conString = "data source=127.0.0.1;database=codematic;user id=sa;
password=";
SqlConnection myConnection = new SqlConnection(conString);
myConnection.Open();
//
//
SqlCommand myCommand = new SqlCommand();
myCommand.Connection = myConnection;
try
{
myCommand.CommandText = "update P_Product set Name='
myCommand.ExecuteNonQuery();
myCommand.CommandText = "update P_Product set Name='
myCommand.ExecuteNonQuery();
Response.Write("
}
catch (Exception ex)
{
Response.Write(ex.ToString());
}
finally
{
myConnection.Close();
}
ADO.NET
优势:
l 简单。
l 和数据库事务差不多快。
l 事务可以跨越多个数据库访问。
l 独立于数据库,不同数据库的专有代码被隐藏了。
限制:事务执行在数据库连接层上,所以需要在执行事务的过程中手动地维护一个连接。
注 意
所有命令都必须关联在同一个连接实例上,ADO.NET事务处理不支持跨多个连接的事务处理。
选自《亮剑.NET. .NET深入体验与实战精要》
0 0
- .NET开发中的事务处理大比拼 之 ADO.NET级别的事务
- .NET开发中的事务处理大比拼 之 ADO.NET级别的事务
- .NET开发中的事务处理大比拼 之 ASP.NET页面级别的事务
- .NET开发中的事务处理大比拼 之 ASP.NET页面级别的事务
- .NET开发中的事务处理大比拼 之 SQL和存储过程级别事务
- .NET开发中的事务处理大比拼 之 SQL和存储过程级别事务
- .NET开发中的事务处理大比拼 之 企业级服务COM+事务
- .NET开发中的事务处理大比拼 之 企业级服务COM+事务
- .NET开发中的事务处理大比拼
- .NET开发中的事务处理大比拼
- .NET开发中的事务处理大比拼 之 System.Transactions
- .NET开发中的事务处理大比拼 之 System.Transactions
- 数据库开发之【ADO.NET级别事务】
- .NET开发中的事务处理大比拼 —《.NET深入体验与实战精要》
- C#事务处理(二)之ADO.NET事务
- ADO.NET中的事务
- ADO.NET中的事务
- 数据库开发之【ASP.NET页面级别的事务】
- asp.net重写URL
- .net 事务处理的三种方法
- .NET开发中的事务处理大比拼 之 ASP.NET页面级别的事务
- .NET开发中的事务处理大比拼
- .NET开发中的事务处理大比拼 之 SQL和存储过程级别事务
- .NET开发中的事务处理大比拼 之 ADO.NET级别的事务
- .NET开发中的事务处理大比拼 之 企业级服务COM+事务
- .NET开发中的事务处理大比拼 之 System.Transactions
- 您可能不知道的.Net2.0小技巧
- 设置滚动条样式
- FCKEditor使用RequiredFieldValidator验证时必须点击两次的解决办法
- 使用CSS实现圆角Div(无图片)
- 【总结】IE和Firefox的Javascript兼容性总结
- SQL Server 2005 创建自动备份的操作步骤