2017-08-11 109 views
-1

我研究了这个问题,但没有得到有形的解决方案。为了您的信息,我使用我们的通用库类进行连接,并且从未遇到过这样的问题。而且我想说的是该项目可以在本地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

+0

添加参数时它应该是'?id'而不是'id'吗? – Ben

+0

在声明'MySqlParameter'时,您已经错过了问号参数sigil('?')。在参数名称前添加标记并再试一次,或者使用.NET版本的查询参数作为'@'。 –

+0

尝试使用'@'而不是'?'。 – Thomas

回答

0

我解决了这个问题,并希望它会帮助谁试过上述解决方案的提示,但解决不了。

发生异常的,因为我的连接库使用MySql.Data.dll版本6.2.2.2 我加的6.9.9.0参考。改变你的MySql.Data参考,它会帮助你。

在我的情况下,我的公司有另一个连接库与6.9.9.0版本。这就是为什么,我用了新的,一切都很好。

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

也许这不起作用,因为这个'我说这是我们的通用连接库。许多项目现在使用它没有问题。还试图使用?和@声明参数时。他们都没有帮助我。“ –

相关问题