只能存储MySqlParameter对象(C#)

mxg2im7a  于 2023-01-01  发布在  Mysql
关注(0)|答案(3)|浏览(250)

我研究了这个问题,但没有得到切实的解决方案。为您提供信息,我使用我们的通用库类连接,从来没有遇到过这样的问题。而且我还想说,该项目成功地运行在我的本地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));

MySql.Data.dll中发生类型为"MySql. Data. MySqlClient. MySqlException"的未处理异常
补充信息:只能存储MySqlParameter对象

6jygbczu

6jygbczu1#

我解决了这个问题,希望它能帮助谁尝试了上述解决方案的提示,但无法解决。
发生异常是因为我的连接库使用MySql.Data.dll版本6.2.2.2,但我添加了6.9.9.0的引用。更改MySql.Data引用,这将对您有所帮助。
在我的情况下,我的公司有另一个连接库,它与6.9.9.0版本一起工作。这就是为什么,我使用了新的连接库,一切正常。

mcvgt66p

mcvgt66p2#

试试这个

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
            });
zpf6vheq

zpf6vheq3#

只是添加此错误的另一个可能的解决方案:完全限定MySqlParameter的名称,如下所示:new MySql.Data.MySqlClient.MySqlParameter(name, value).
在我的一个项目中,MySqlConnectorMySql.Data.MySqlClient都被引用,在没有完全限定的情况下,它使用了前者,这导致了一个造型错误和随后的db调用中的异常。

相关问题