using (MySqlConnection connection = new MySqlConnection(connectionString))
{
using (MySqlCommand cmd = new MySqlCommand())
{
PrepareCommand(cmd, connection, null, SQLString, cmdParms);
try
{
int rows = cmd.ExecuteNonQuery(); //执行到这里报错。
cmd.Parameters.Clear();
return rows;
}
catch (System.Exception e)
{
//throw e;
msg=e.Message;
return 1;
}
}
}
private static void PrepareCommand(MySqlCommand cmd, MySqlConnection conn, MySqlTransaction trans, string cmdText, MySqlParameter[] cmdParms)
{
if (conn.State != ConnectionState.Open)
conn.Open();
cmd.Connection = conn;
cmd.CommandText = cmdText;
if (trans != null)
cmd.Transaction = trans;
cmd.CommandType = CommandType.Text;//cmdType;
if (cmdParms != null)
{
foreach (MySqlParameter parameter in cmdParms)
{
if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) &&
(parameter.Value == null))
{
parameter.Value = DBNull.Value;
}
cmd.Parameters.Add(parameter);
}
}
}
错误提示:"无法将类型为“MySql.Data.MySqlClient.MySqlParameter”的对象强制转换为类型“MySql.Data.MySqlClient.MySqlParameter”。"
------解决思路----------------------
我很怀疑这个两个MySqlParameter压根就不是同一个类型
------解决思路----------------------
cmdParms的定义和初始化代码放出来看看
------解决思路----------------------
前面的MySqlParameter内参数格式或者MySqlParameter命名空间本身可能有问题,所以重新new MySqlParameter就OK
------解决思路----------------------
foreach (MySqlParameter parameter in cmdParms)中的MySqlParameter 与cmdParms 中的不一致吧,看看命名空间引用对了没
------解决思路----------------------
MySqlParameter[] parameters = new MySqlParameter[]{
// todo.....
};