不仅对字符串类型,使用AddWithValue方法对于任何类型的参数都存在潜在的危险。因为该方法会根据提供的参数自动推断参数的类型,从而可能导致类型不匹配或者不符合预期的结果。
一个更为安全的方法是使用SqlCommand对象的Parameters属性,手动添加参数并指定参数类型。例如:
string name = "John"; int age = 25;
using (var connection = new SqlConnection(connectionString)) { using (var command = new SqlCommand("INSERT INTO Users (Name, Age) VALUES (@name, @age)", connection)) { command.Parameters.AddWithValue("@name", name); command.Parameters.AddWithValue("@age", age);
connection.Open();
command.ExecuteNonQuery();
}
}
在这个例子中,我们手动添加了两个参数@name和@age,并分别指定了它们的类型。这样就能避免AddWithValue方法的潜在危险。