C#sqlclient数据库事务BeginTransaction()详解重载
重载
开始数据库事务。
以指定的隔离级别启动数据库事务。
以指定的事务名称启动数据库事务。
以指定的隔离级别和事务名称启动数据库事务。
BeginTransaction()
开始数据库事务。
public System.Data.SqlClient.SqlTransaction BeginTransaction ();
返回
表⽰新事务的对象。
例外
使⽤多个活动结果集 (MARS) 时,不允许并⾏事务。
不⽀持并⾏事务。
⽰例
下⾯的⽰例创建⼀个和⼀个。它还演⽰了如何使⽤、、和⽅法。
private static void ExecuteSqlTransaction(string connectionString)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
SqlCommand command = connection.CreateCommand();
SqlTransaction transaction;
// Start a local transaction.
transaction = connection.BeginTransaction("SampleTransaction");
// Must assign both transaction object and connection
// to Command object for a pending local transaction
command.Connection = connection;
command.Transaction = transaction;
try
{
command.CommandText =
"Insert into Region (RegionID, RegionDescription) VALUES (100, 'Description')";
command.ExecuteNonQuery();
command.CommandText =
"Insert into Region (RegionID, RegionDescription) VALUES (101, 'Description')";
command.ExecuteNonQuery();
// Attempt to commit the transaction.
transaction.Commit();
Console.WriteLine("Both records are written to database.");
}
catch (Exception ex)
{
Console.WriteLine("Commit Exception Type: {0}", ex.GetType());
Console.WriteLine(" Message: {0}", ex.Message);
// Attempt to roll back the transaction.
try
{
transaction.Rollback();
}
catch (Exception ex2)
{
// This catch block will handle any errors that may have occurred
/
/ on the server that would cause the rollback to fail, such as
// a closed connection.
Console.WriteLine("Rollback Exception Type: {0}", ex2.GetType());
Console.WriteLine(" Message: {0}", ex2.Message);
sqltransaction什么意思}
}
}
}
注解
此命令映射到 BEGIN TRANSACTION 的 SQL Server 实现。
必须使⽤或⽅法显式提交或回滚事务。为了确保 SQL Server 事务管理模型的 .NET Framework 数据提供程序正确执⾏,请避免使⽤其他事务管理模型,如 SQL Server 提供的模型。
备注
如果未指定隔离级别,则使⽤默认的隔离级别。若要使⽤⽅法指定隔离级别,请使⽤iso) (采⽤参数的重载。在事务完成后,为事务设置的隔离级别将保留,直到关闭或释放连接。在未启⽤快照隔离级别的数据库中,将隔离级别设置为 snapshot 不会引发异常。该事务将使⽤默认隔离级别完成。
注意
如果事务已启动并且服务器上发⽣级别16或更⾼的错误,则在调⽤⽅法之前,不会回滚事务。 ExecuteReader上不引发异常。
注意
如果查询返回⼤量的数据和调⽤BeginTransaction,则会引发,因为 SQL Server 在使⽤ MARS 时不允许并⾏事务。若要避免此问题,请始终在打开任何读取器之前将事务与命令和/或连接关联。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论