【发布时间】:2021-07-14 11:13:19
【问题描述】:
我有两个 using 块:
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 那样声明事务?
【问题讨论】:
-
“是否足以使这个查询安全” - 那么,查询做什么?如果它是单行的简单
insert,那么它已经具有一定的原子性——尽管对例如隔离级别的细粒度控制需要更多工作(如果需要);如果它有多个步骤,它可能需要一个事务,取决于您的环境和要求以及查询,我们都不知道 -
您的查询可能不是问题,虽然我们没有查询,但您应该使用
Parameters.Add。 Can we stop using AddWithValue() already?It's Evil. -
我认为您将安全性(您创建的必要对象是否会正确处理)和关于数据库级别原子性的安全性混为一谈。您必须出示您的查询,以便我们知道您是否应该使用交易。
-
@Stuart 确实,这就是我添加替代答案的原因
标签: c# sql-server sqltransaction