只能存储 MySqlParameter 对象 (C#)

Only MySqlParameter objects may be stored (C#)

我研究了这个问题,但没有得到切实的解决方案。供您参考,我使用我们的通用库 class 进行连接,但从未遇到过此类问题。而且我想说项目在我的本地 PC 上运行成功,但在服务器上运行失败。

这是我出错的代码片段:

    queue_tablename = tablename;

    conn = myconn;
    writecomm = conn.CreateCommand();
    writecomm.CommandText = "insert into "+tablename+" (id,mtype,channel,dt,fromnumber,tonumber,smstext)" +
        "values (?id,?mtype,?channel,?dt,?fromnumber,?tonumber,?smstext)";
    writecomm.Parameters.Add(new MySqlParameter("id", MySqlDbType.Int64));
    writecomm.Parameters.Add(new MySqlParameter("mtype", MySqlDbType.VarChar));
    writecomm.Parameters.Add(new MySqlParameter("channel", MySqlDbType.VarChar));
    writecomm.Parameters.Add(new MySqlParameter("dt", MySqlDbType.DateTime));
    writecomm.Parameters.Add(new MySqlParameter("fromnumber", MySqlDbType.VarChar));
    writecomm.Parameters.Add(new MySqlParameter("tonumber", MySqlDbType.VarChar));
    writecomm.Parameters.Add(new MySqlParameter("smstext", MySqlDbType.VarChar));

这一行抛出异常:

writecomm.Parameters.Add(new MySqlParameter("id", MySqlDbType.Int64));

An unhandled exception of type 'MySql.Data.MySqlClient.MySqlException' occurred in MySql.Data.dll

Additional information: Only MySqlParameter objects may be stored

试试这个,

Change `?` to `@` in your command text and,

像这样添加参数,

writecomm.Parameters.Add("@id", MySqlDbType.Int64).Value = ParameterValue;

writecomm.Parameters.Add(new MySqlParameter
            {
                ParameterName = "@id",
                MySqlDbType = MySqlDbType.Int64,
                Value=ParameterValue
            });

我解决了这个问题,希望对试过以上解决方法提示无法解决的人有所帮助。

出现异常是因为我的连接库使用了MySql.Data.dll版本6.2.2.2但是我添加了[=的引用16=]6.9.9.0。更改您的 MySql.Data 参考资料,它会对您有所帮助。

就我而言,我公司有另一个适用于 6.9.9.0 版本的连接库。所以,我用的是新的,一切正常。