我很怀疑这个两个MySqlParameter压根就不是同一个类型

解决方案 »

  1.   

     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);                    
                    }
    结果发现这个循环中的问题,改为以下后,正常
                    foreach (MySqlParameter parameter in cmdParms)
                    {
                        if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) &&
                            (parameter.Value == null))
                        {
                            parameter.Value = DBNull.Value;
                        }
                        MySqlParameter pa = new MySqlParameter(parameter.ParameterName, parameter.MySqlDbType.ToString());
                        pa.Value = parameter.Value.ToString();
                        cmd.Parameters.Add(pa);                }不知道为什么,请大家指教。
      

  2.   


    在执行 cmd.Parameters.Add(pa);前,必须先new 一个MySqlParameter才行,
    否则执行int rows = cmd.ExecuteNonQuery();就报错 ,是怎么回事?
      

  3.   

    cmdParms的定义和初始化代码放出来看看
      

  4.   

    前面的MySqlParameter内参数格式或者MySqlParameter命名空间本身可能有问题,所以重新new MySqlParameter就OK
      

  5.   

    foreach (MySqlParameter parameter in cmdParms)中的MySqlParameter  与cmdParms 中的不一致吧,看看命名空间引用对了没
      

  6.   


    StringBuilder strSql=new StringBuilder();
    strSql.Append("insert into report(");
                strSql.Append("RequestNum,PatientName,PatientSex,PatientRecordNo,SampleType,SampleState,.......)"); strSql.Append(" values (");
                strSql.Append("@RequestNum,@PatientName,@PatientSex,@PatientRecordNo,@SampleType,@SampleState......)"); MySqlParameter[] parameters = {
    new MySqlParameter("@RequestNum", MySqlDbType.VarChar,50),
                        new MySqlParameter("@PatientName", MySqlDbType.VarChar,50),
                        new MySqlParameter("@PatientSex", MySqlDbType.VarChar,50),
                        new MySqlParameter("@PatientRecordNo", MySqlDbType.VarChar,50),
                        new MySqlParameter("@SampleType", MySqlDbType.VarChar,50),
                        new MySqlParameter("@SampleState", MySqlDbType.VarChar
    .......此处省略 parameters[0].Value = model.RequestNum.ToString();
                parameters[1].Value = model.PatientName.ToString();
                parameters[2].Value = model.PatientSex.ToString();
                parameters[3].Value = model.PatientRecordNo.ToString();
                parameters[4].Value = model.SampleType.ToString();
                parameters[5].Value = model.SampleState.ToString();
    .......此处省略代码是用动软生成的工厂模式架构。
      

  7.   

    单步跟踪到foreach循环,cmdParms 里面的值是正确的,类型也是正确的。
      

  8.   

    单步跟踪到foreach循环,cmdParms 里面的值是正确的,类型也是正确的。

    MySqlParameter[] parameters = new MySqlParameter[]{
           // todo.....
    };