Bạn cần thêm các tham số trước khi chỉ định giá trị:
mySqlCommand.Parameters.Add("@AreaName", SqlDbType.VarChar);
mySqlCommand.Parameters["@AreaName"].Value =
(string.IsNullOrEmpty(Convert.ToString(PModel.AreaName))
? (object)DBNull.Value : PModel.AreaName));
Cân nhắc sử dụng cú pháp thay thế này:
mySqlCommand.Parameters.AddWithValue("@AreaName",
(string.IsNullOrEmpty(Convert.ToString(PModel.AreaName))
? (object)DBNull.Value : PModel.AreaName));
Bạn có thể tìm thấy một ví dụ ngắn gọn về từng thứ trên Thuộc tính SqlCommand.Parameters trang tại MSDN.
Ngoài ra, bạn đã làm điều gì đó thú vị với chuỗi truy vấn. Điều này sẽ khắc phục nó:
mySqlCommand.CommandText =
"SELECT * FROM PlantAreaCodes WHERE (AreaCode IS NULL OR AreaCode LIKE @AreaCode OR AreaName IS NULL OR AreaName LIKE @AreaName OR Comments IS NULL OR Comments LIKE @Comment;";
Để nhận được LIKE
để hoạt động chính xác, bạn có thể phải thêm %
các ký hiệu xung quanh các giá trị tham số của bạn khi bạn thêm chúng:
var areaName = (string.IsNullOrEmpty(Convert.ToString(PModel.AreaName))
? (object)DBNull.Value : PModel.AreaName)
mySqlCommand.Parameters.AddWithValue("@AreaName", "%" + areaName + "%");