Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Parâmetro @Name não encontrado na coleção


Você precisa adicionar os parâmetros antes de especificar um valor:
mySqlCommand.Parameters.Add("@AreaName", SqlDbType.VarChar);

mySqlCommand.Parameters["@AreaName"].Value =
    (string.IsNullOrEmpty(Convert.ToString(PModel.AreaName))
        ? (object)DBNull.Value : PModel.AreaName));

Considere usar esta sintaxe alternativa:
mySqlCommand.Parameters.AddWithValue("@AreaName",
    (string.IsNullOrEmpty(Convert.ToString(PModel.AreaName))
        ? (object)DBNull.Value : PModel.AreaName));

Você pode encontrar um breve exemplo de cada um em Propriedade SqlCommand.Parameters página no MSDN.

Além disso, você fez algo estranho com a string de consulta. Isso deve corrigi-lo:
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;";

Para obter o LIKE s para funcionar corretamente, você provavelmente terá que adicionar % símbolos em torno de seus valores de parâmetro ao adicioná-los:
var areaName = (string.IsNullOrEmpty(Convert.ToString(PModel.AreaName))
                   ? (object)DBNull.Value : PModel.AreaName)

mySqlCommand.Parameters.AddWithValue("@AreaName", "%" + areaName + "%");