是否必须在 C# 中使用带有 using 关键字的 sqltransaction
Is it necesserly to use sqltransaction with using keyword in C#
我有两个使用块:
using (SqlConnection connection = new SqlConnection(_connectionString))
{
String query = "query...";
using (SqlCommand command = new SqlCommand(query, connection))
{
command.Parameters.AddWithValue("@param", "paramValue");
connection.Open();
int result = command.ExecuteNonQuery();
// Check Error
if (result < 0)
Console.WriteLine("Error inserting data into Database!");
}
}
是否足以使此查询安全,或者是否需要像 this post 中那样声明交易?
单个操作不需要事务,因为单个操作会创建隐式事务。当你处理多个应该被视为“原子”的操作时,事务是有意义的,即如果一个失败,你可以回滚所有更改(事务还有更多用途,但我尽量保持简单)
您要求安全,这可能与资源或数据库数据的观点有关。
using语句
using statement 是释放非托管资源的 try-catch-finally
语句的语法糖。
请注意,这与您的数据库代码无关,它仅处理 IDisposable
对象,在您的代码中 SQLConnection
和 SQLCommand
.
您可以选择不编写 using 语句,但它非常有用,我建议您使用 using
语句...不仅用于数据库连接,还用于其他非托管资源。
SQL事务
如果有多个操作并且您关心确保它们以原子方式运行(全部完成或没有任何变化),则需要数据库事务。
您可以直接在 your SQL code or declared in your .net code using a SQLTransaction 中进行数据库事务:
在您的 SQL 代码中:
BEGIN TRANS myTrans
Insert into Region (RegionID, RegionDescription) VALUES (100, 'Description');
Insert into Region (RegionID, RegionDescription) VALUES (101, 'Description');
COMMIT TRANS myTrans
或在 .NET 中声明:
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.");
}
我有两个使用块:
using (SqlConnection connection = new SqlConnection(_connectionString))
{
String query = "query...";
using (SqlCommand command = new SqlCommand(query, connection))
{
command.Parameters.AddWithValue("@param", "paramValue");
connection.Open();
int result = command.ExecuteNonQuery();
// Check Error
if (result < 0)
Console.WriteLine("Error inserting data into Database!");
}
}
是否足以使此查询安全,或者是否需要像 this post 中那样声明交易?
单个操作不需要事务,因为单个操作会创建隐式事务。当你处理多个应该被视为“原子”的操作时,事务是有意义的,即如果一个失败,你可以回滚所有更改(事务还有更多用途,但我尽量保持简单)
您要求安全,这可能与资源或数据库数据的观点有关。
using语句
using statement 是释放非托管资源的 try-catch-finally
语句的语法糖。
请注意,这与您的数据库代码无关,它仅处理 IDisposable
对象,在您的代码中 SQLConnection
和 SQLCommand
.
您可以选择不编写 using 语句,但它非常有用,我建议您使用 using
语句...不仅用于数据库连接,还用于其他非托管资源。
SQL事务
如果有多个操作并且您关心确保它们以原子方式运行(全部完成或没有任何变化),则需要数据库事务。
您可以直接在 your SQL code or declared in your .net code using a SQLTransaction 中进行数据库事务:
在您的 SQL 代码中:
BEGIN TRANS myTrans
Insert into Region (RegionID, RegionDescription) VALUES (100, 'Description');
Insert into Region (RegionID, RegionDescription) VALUES (101, 'Description');
COMMIT TRANS myTrans
或在 .NET 中声明:
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.");
}