If MySqlParameter is inserted into MySqlCommand.Parameters collection using MySqlParameterCollection.Insert, then the MySqlParameter.Value is not used.
var command = connection.CreateCommand();
var parameter = new MySqlParameter("@Id", MySqlDbType.Int32);
command.Parameters.Insert(0, parameter);
parameter.Value = 5;
command.CommandText = "SELECT @Id";
var value = command.ExecuteScalar(); // returns DBNull