数据库
首页 > 数据库> > C#MySQL语法错误

C#MySQL语法错误

作者:互联网

我得到:

您的SQL语法有误;检查与您的MySQL服务器相对应的手册
在第1行的’spectra’WHERE specId = 42’附近使用的正确语法的版本

运行此代码时:

public System.Drawing.Image GetImage(int index)
{
 using (MySqlCommand command = connection.CreateCommand())
 {
  //command.CommandText = "SELECT imageObj FROM spectra WHERE specId=42"; <== Works OK!

  command.CommandText = "SELECT imageObj FROM @tname WHERE specId=@index";
  command.Parameters.AddWithValue("@index", index);
  command.Parameters.AddWithValue("@tname", "spectra");

  using (MySqlDataReader reader = command.ExecuteReader())
  {
   if (reader.Read())
   {
    return (System.Drawing.Image)Serial.ByteArrayToObject((byte[])reader[0]);
   }
  }
 }
 return null;
}

我认为问题出在光谱周围.如何删除它们?

解决方法:

您不能用参数替换表名.可悲的是,这只是不被支持.这样只能替换WHERE子句中的参数值.

您必须自己进行替换,而不是依赖MySqlCommand对象.这样的事情应该起作用:

string tableName = "spectra";
command.CommandText = 
    String.Format( "SELECT imageObj FROM {0} WHERE specId=@index", tableName );
command.Parameters.AddWithValue("@index", index);

标签:syntax-error,c,mysql
来源: https://codeday.me/bug/20191101/1981756.html