Không cần thuật toán - chỉ cần không sử dụng nối chuỗi để xây dựng các câu lệnh SQL. Thay vào đó, hãy sử dụng bộ sưu tập SqlCommand.Parameters. Điều này thực hiện tất cả các giá trị thoát cần thiết (chẳng hạn như thay thế '
với ''
) và đảm bảo rằng lệnh sẽ an toàn vì ai đó khác (tức là Microsoft) đã thực hiện tất cả các thử nghiệm.
ví dụ. gọi một thủ tục được lưu trữ:
using (var connection = new SqlConnection("..."))
using (var command = new SqlCommand("MySprocName", connection))
{
command.CommandType = CommandType.StoredProcedure;
command.Parameters.AddWithValue("@Param1", param1Value);
return command.ExecuteReader();
}
Kỹ thuật này cũng hoạt động đối với các câu lệnh SQL nội dòng, ví dụ:
var sql = "SELECT * FROM MyTable WHERE MyColumn = @Param1";
using (var connection = new SqlConnection("..."))
using (var command = new SqlCommand(sql, connection))
{
command.Parameters.AddWithValue("@Param1", param1Value);
return command.ExecuteReader();
}