只能存储MySqlParameter对象

时间:2015-11-07 14:24:39

标签: c# mysql

我跟着this线程尝试设置与MySQL的连接并运行预准备语句(与他们正在讨论的线程Postgresql中的细微差别)。这就是我所做的:

  IDbConnection cnx = new MySqlConnection(connectionString);
  cnx.Open();
  IDbCommand cmd = cnx.CreateCommand();

  string sql = "insert into table1 (column2) values ($1)";

  cmd.CommandText = sql;

  IDbDataParameter param = cmd.CreateParameter();
  param.DbType = DbType.AnsiString;
  param.ParameterName = "1";
  param.Value = "Parameter Value";

  cmd.Parameters.Add(param);
  cmd.ExecuteNonQuery();

但结果是,我收到了错误消息:

  

MySql.Data.MySqlClient.MySqlException:只能存储MySqlParameter对象     at MySql.Data.MySqlClient.MySqlParameterCollection.Add(System.Object value)[0x00000] in:0

我应该补充一点,我特意使用IDbConnection,因为后来我想将这个代码重用于其他数据库,这种方法可以节省数百行代码。

1 个答案:

答案 0 :(得分:3)

使用@作为名称装饰者,而不是$

string sql = "insert into table1 (column2) values (@value)";
...
cmd.Parameters.Add("@value", MySqlDbType.AnsiString).Value = "Parameter Value";