Mysql
 sql >> Base de données >  >> RDS >> Mysql

Paramètre @Name introuvable dans la collection

Vous devez ajouter les paramètres avant de spécifier une valeur :

mySqlCommand.Parameters.Add("@AreaName", SqlDbType.VarChar);

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

Envisagez d'utiliser cette syntaxe alternative :

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

Vous pouvez trouver un bref exemple de chacun sur le Propriété SqlCommand.Parameters sur MSDN.

De plus, vous avez fait quelque chose de génial avec la chaîne de requête. Cela devrait résoudre le problème :

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;";

Pour obtenir le LIKE s pour fonctionner correctement, vous devrez probablement ajouter % symboles autour des valeurs de vos paramètres lorsque vous les ajoutez :

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

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