【问题标题】:Parameter '@email' must be defined [closed]必须定义参数“@email”[关闭]
【发布时间】:2014-11-09 10:59:23
【问题描述】:

当我尝试插入我的数据库时出现错误必须定义参数“@email” 我的代码:

 MySqlCommand cmd = new MySqlCommand("INSERT INTO users VALUES(@email,@password,@firstName,@LastName,@UserID,@address,@birthday,0)", con);    
cmd.Parameters.AddWithValue(@email, email);
            cmd.Parameters.AddWithValue(@password, password);
            cmd.Parameters.AddWithValue(@firstName, firstName);
            cmd.Parameters.AddWithValue(@LastName, LastName);
            cmd.Parameters.AddWithValue(@UserID,UserID);
            cmd.Parameters.AddWithValue(@address, address);
            cmd.Parameters.AddWithValue(@birthday, birthday);

            /*THE PROBLEM ISNT IN THE DATABASE,THE FOLOOW INSERT STATMENT WORK!"*/
           // MySqlCommand cmd = new MySqlCommand("INSERT INTO users VALUES('evyataresdxez','sdfs','sdfsdf','sdds',33,'sdfsdf','232',0)", con);


            con.Open();
            cmd.ExecuteNonQuery();
            cmd.Parameters.Clear();

我在数据库/代码中没有问题,因为注释中的代码运行良好。谢谢

【问题讨论】:

  • 尝试在 AddWithValue 调用中删除 @

标签: c# mysql asp.net mysql-connector


【解决方案1】:

您需要引用参数名称。就目前而言,您将参数值作为参数名称传递:

        cmd.Parameters.AddWithValue("email", email);
        cmd.Parameters.AddWithValue("password", password);
        cmd.Parameters.AddWithValue("firstName", firstName);
        cmd.Parameters.AddWithValue("LastName", LastName);
        cmd.Parameters.AddWithValue("UserID", UserID);
        cmd.Parameters.AddWithValue("address", address);
        cmd.Parameters.AddWithValue("birthday", birthday);

这只是按照您的方式编译,因为变量名称前的 @ 符号是 valid syntax,并且您碰巧将变量命名为与参数名称相同。

【讨论】:

  • 哇,我尝试修复它 4 小时:D..谢谢!!!!
猜你喜欢
  • 1970-01-01
  • 2014-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-05
  • 2021-12-22
相关资源
最近更新 更多