sql >> Base de Datos >  >> RDS >> Mysql

Parámetro @Name no encontrado en la colección

Debe agregar los parámetros antes de especificar un 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 sintaxis alternativa:

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

Puede encontrar un breve ejemplo de cada uno en Propiedad SqlCommand.Parameters página en MSDN.

Además, has hecho algo extraño con la cadena de consulta. Esto debería solucionarlo:

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 obtener el LIKE s funcione correctamente, probablemente tendrá que agregar % símbolos alrededor de los valores de sus parámetros cuando los está agregando:

var areaName = (string.IsNullOrEmpty(Convert.ToString(PModel.AreaName))
                   ? (object)DBNull.Value : PModel.AreaName)

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