只有MySqlParameter对象可以存储(C#)
问题描述:
我研究了这个问题,但没有得到有形的解决方案。为了您的信息,我使用我们的通用库类进行连接,并且从未遇到过这样的问题。而且我想说的是该项目可以在本地PC上成功运行,但不能在服务器上运行。只有MySqlParameter对象可以存储(C#)
这是代码片段,我得到一个错误:
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
答
我解决了这个问题,并希望它会帮助谁试过上述解决方案的提示,但解决不了。
发生异常的,因为我的连接库使用MySql.Data.dll版本6.2.2.2 但我加的6.9.9.0参考。改变你的MySql.Data参考,它会帮助你。
在我的情况下,我的公司有另一个连接库与6.9.9.0版本。这就是为什么,我用了新的,一切都很好。
答
试试这个,
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
});
+0
也许这不起作用,因为这个'我说这是我们的通用连接库。许多项目现在使用它没有问题。还试图使用?和@声明参数时。他们都没有帮助我。“ –
添加参数时它应该是'?id'而不是'id'吗? – Ben
在声明'MySqlParameter'时,您已经错过了问号参数sigil('?')。在参数名称前添加标记并再试一次,或者使用.NET版本的查询参数作为'@'。 –
尝试使用'@'而不是'?'。 – Thomas