【问题标题】:c# mysql insert statement. Parameterized query example?c# mysql 插入语句。参数化查询示例?
【发布时间】:2016-06-24 03:32:14
【问题描述】:

我正试图让这个insert 语句起作用。

string sql = "INSERT INTO usuario (apellido,nombre,email,password,id_localidad) "
                         + "VALUES (?apellido,?nombre,?email,?password,?idLocalidad); ";

            MySqlCommand cmd = new MySqlCommand(sql, conn);
            cmd.Prepare();
            cmd.Parameters.AddWithValue("apellido ", usuario.apellido);
            cmd.Parameters.AddWithValue("nombre ", usuario.nombre);
            cmd.Parameters.AddWithValue("email ", usuario.email);
            cmd.Parameters.AddWithValue("password ", password);
            cmd.Parameters.AddWithValue("idLocalidad ", usuario.localidad.idLocalidad);
cmd.ExecuteNonQuery();

但又一次,我得到一个异常说需要定义第一个参数。如果我使用 @ 占位符,当我添加参数时,我会收到 null 错误。我还在连接字符串中添加了以下内容。

AllowUserVariables=True

我知道这个问题的变种已经出现在整个网站上,但我遵循了提供的建议,但仍然无法使其发挥作用。

任何帮助将不胜感激。谢谢

【问题讨论】:

  • 能否请您添加您尝试过的带有@ placeholder 的代码?
  • string sql = "INSERT INTO usuario (apellido,nombre,email,password,id_localidad) " + "VALUES (@apellido,@nombre,@email,@password,@idLocalidad); ";
  • 你如何添加参数?
  • cmd.Parameters.AddWithValue("@apellido ", usuario.apellido); cmd.Parameters.AddWithValue("@nombre", usuario.nombre); cmd.Parameters.AddWithValue("@email ", usuario.email); cmd.Parameters.AddWithValue("@password", 密码); cmd.Parameters.AddWithValue("@idLocalidad ", usuario.localidad.idLocalidad);
  • 看起来不错。让我知道给出这种例外的行吗?这次

标签: c# mysql asp.net-mvc parameterized-query


【解决方案1】:

您可以尝试指定MySQLDbType 以匹配您的数据库类型并使用Add 函数:

cmd.Parameters.Add("?apellido", MySqlDbType.VarChar).Value = usuario.apellido;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-09
    • 2017-06-03
    • 2010-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-08
    相关资源
    最近更新 更多