【发布时间】:2017-08-11 07:47:13
【问题描述】:
我研究了这个问题,但没有得到切实的解决方案。供您参考,我使用我们的通用库类进行连接,从未遇到过这样的问题。而且我想说的是,该项目在我的本地 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.MySqlClient.MySqlException”类型的未处理异常 发生在MySql.Data.dll
附加信息:只能存储 MySqlParameter 对象
【问题讨论】:
-
添加参数时应该是
?id而不是id? -
您在声明
MySqlParameter时错过了问号参数 sigil (?)。在参数名称前添加标记并重试,或使用 .NET 版本的查询参数作为@。 -
尝试使用 '@' 而不是 '?'。
-
我说这是我们通用的连接库。现在很多项目都使用它没有问题。在声明参数时还尝试使用
?和@。他们都没有帮助我。 -
那段代码是mysql的默认库。。更别说是你的队友创建的。我什至不再使用
?那个标志了。现在,如果它正在工作,请继续。
标签: c# mysql ado.net mysql-connector