我关注了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: Only MySqlParameter objects may be stored at MySql.Data.MySqlClient.MySqlParameterCollection.Add (System.Object value) [0x00000] in :0
我应该补充一点,我专门使用 IDbConnection
,因为稍后我想在其他数据库中重用此代码,这种方法应该可以节省我数百行代码。
最佳答案
使用@
作为名称装饰器而不是$
string sql = "insert into table1 (column2) values (@value)";
...
cmd.Parameters.Add("@value", MySqlDbType.AnsiString).Value = "Parameter Value";
关于c# - 只能存储 MySqlParameter 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33583811/