Mysql
 sql >> Database >  >> RDS >> Mysql

Parametro @Nome non trovato nella raccolta

È necessario aggiungere i parametri prima di specificare un valore:

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

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

Prendi in considerazione l'utilizzo di questa sintassi alternativa:

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

Puoi trovare un breve esempio di ciascuno su Proprietà SqlCommand.Parameters pagina su MSDN.

Inoltre, hai fatto qualcosa di strano con la stringa di query. Questo dovrebbe risolverlo:

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

Per ottenere il LIKE s per funzionare correttamente, probabilmente dovrai aggiungere % simboli attorno ai valori dei parametri quando li aggiungi:

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

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