只能存储 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 版本的连接库。所以,我用的是新的,一切正常。
我研究了这个问题,但没有得到切实的解决方案。供您参考,我使用我们的通用库 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 版本的连接库。所以,我用的是新的,一切正常。