Parece que está utilizando el objeto MySqlCommand, al menos en su segundo ejemplo. Para obtener cualquier beneficio de las declaraciones preparadas, no debe deshacerse de los objetos de conexión y comando. También querrá llamar a prepare después de configurar CommandText y antes de configurar cualquier parámetro.
https://dev.mysql .com/doc/connector-net/en/connector-net-programming-prepared-preparing.html
Además, los parámetros de declaración preparados en MySQL no se nombran, se especifican según el orden. CommandText solo debe contener signos de interrogación donde están los parámetros, y los objetos de parámetro deben agregarse exactamente en ese orden.