Insérer des données dans une table de base de données avec zone de texte

J'essaie d'insérer des données dans une table et le code snipplet j'ai vu semble fonctionner pour cette personne, mais pour moi!
Je ne sais pas ce que je fais mal parce que je ne connais pas la manipulation de la base de données pour asp.net. Quelqu'un peut-il me dire de quoi de mal avec le code?

public partial class CompanyLogin : System.Web.UI.Page
{
protected void Button1_Click(object sender, EventArgs e)
{
    OdbcConnection conn = new OdbcConnection();
    conn.ConnectionString = @".\SQLEXPRESS;AttachDbFilename=|DataDirectory|\VCtemps.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";

    string sql = "insert into company values(@CompName, @BusinessType, @Pword)";
    OdbcCommand cmd = new OdbcCommand(sql);
    string CompName = txtCompName.Text;
    string BusinessType = DropDownList1.Text;
    string Pword = txtPassword.Text;
    cmd.Connection = conn;

    cmd.CommandText = "insert into company(CompName, BusinessType, Pword) Values(@CompName,@BusinessType,@Pword);";
    cmd.Parameters.AddWithValue("@CompName",SqlDbType.VarChar);    
    cmd.Parameters.AddWithValue("@BusinessType",SqlDbType.VarChar);    
    cmd.Parameters.AddWithValue("@Pword",SqlDbType.VarChar);    

cmd.ExecuteNonQuery();

    conn.Close();

    txtCompName.Text = "";
    txtPassword.Text = "";
    DropDownList1.Text = "";
}
}

J'ai corrigé le code, merci à vous les gars, mais quand je le lance ou quand je clique sur le bouton enregistrer j'obtiens l'erreur suivante

ExecuteNonQuery nécessite une Connexion ouverte et disponible. La connexion est fermée

  • votre commande insert doit être remaniée essayez d'utiliser SQL Params à la place..