Parece que você está usando o objeto MySqlCommand, pelo menos no seu segundo exemplo. Para obter qualquer benefício das instruções preparadas, você precisaria não descartar os objetos de conexão e comando. Você também vai querer chamar prepare depois de definir CommandText e antes de definir qualquer parâmetro.
https://dev.mysql .com/doc/connector-net/en/connector-net-programming-prepared-preparing.html
Os parâmetros de instrução preparados no MySQL também não são nomeados, eles são especificados com base na ordem. O CommandText deve conter apenas pontos de interrogação onde estão os parâmetros, e os objetos de parâmetro precisam ser adicionados exatamente nessa ordem.