C # con los parámetros de MySQL INSERT

Buenos días a todos, estoy usando Visual C # 2010 y MySQL versión 5.1.48-community. Espero que me puedas ayudar con este código. No lo encuentro funcionando en mí. ¿Qué me estoy perdiendo?

string connString = ConfigurationManager.ConnectionStrings["default"].ConnectionString;
MySqlConnection conn = new MySqlConnection(connString);
conn.Open();
MySqlCommand comm = conn.CreateCommand();
comm.CommandText = "INSERT INTO room(person,address) VALUES(@person, @address)";
comm.Parameters.Add("@person", "Myname");
comm.Parameters.Add("@address", "Myaddress");
comm.ExecuteNonQuery();
conn.Close();

Y cuando intento compilarlo. Dice:

La columna de persona no puede ser nula

EDITADO:

Pero cuando intento este código.

comm.CommandText = "INSERT INTO room(person,address) VALUES('Myname', 'Myaddress')";

Pero este código es propenso al ataque de inyección de SQL, pero funciona, no me da un error.

EDITADO:

Traté de usar esto. Lo encontréaquí Así que pensé que funcionaría pero me da este error.

El índice (basado en cero) debe ser mayor o igual a cero y menor que el tamaño de la lista de argumentos.

¿Alguna idea?

    string a = "myname";
    MySqlCommand cmd = new MySqlCommand();
    cmd.Connection = conn;
    cmd.CommandText = "INSERT INTO room(person,address) VALUES(?,?)";
    //cmd.Prepare();

    cmd.Parameters.Add("person", MySqlDbType.VarChar).Value = a;
    cmd.Parameters.Add("address", MySqlDbType.VarChar).Value = "myaddress";
    cmd.ExecuteNonQuery(); // HERE I GOT AN EXCEPTION IN THIS LINE

Cualquier ayuda sería muy apreciada.

EDITADO:Resuelto Utilicé este código:

cmd.CommandText = "INSERT INTO room(person,address) VALUES(?person,?address)";
cmd.Parameters.Add("?person", MySqlDbType.VarChar).Value = "myname";
cmd.Parameters.Add("?address", MySqlDbType.VarChar).Value = "myaddress";
cmd.ExecuteNonQuery();

¡Gracias!

Respuestas a la pregunta(9)

Su respuesta a la pregunta