难道MySQL不能动态创建参数吗?为什么SQL Server可以呢?一运行就抛异常,paymengID列不能为空,,,,囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧
     
   private MySqlCommand GetInsertOrderDishPaymentCommand()
        {            StringBuilder sbInsert = new StringBuilder();
            sbInsert.Append("INSERT INTO orderdishpayment");
            sbInsert.Append("(paymentID, ChosenDishUnitsID, userID, timestamp)");
            sbInsert.Append(" VALUES(@apaymentid,@achosendishunitsid,@asenderid,@auid)");            MySqlCommand cmdInsert = 
                new MySqlCommand(sbInsert.ToString(), ConnFactory.MySqlConnInstance);            cmdInsert.Parameters.Add("@apaymentid", MySqlDbType.Int64);
            cmdInsert.Parameters.Add("@achosendishunitsid", MySqlDbType.Int64);
            cmdInsert.Parameters.Add("@asenderid", MySqlDbType.String);
            cmdInsert.Parameters.Add("@auid", MySqlDbType.Int64);            cmdInsert.Prepare();            MessageBox.Show(cmdInsert.Parameters.Count.ToString());            return cmdInsert;        }
===============================调用程序代码段=================================for (int i = 0; i < chosenDishUnitList.Count; i++)
                {
                    MessageBox.Show(cmdInsert.Parameters.Count.ToString());                    cmdInsert.Parameters["@apaymentid"].Value = paymentID;
                    cmdInsert.Parameters["@achosendishunitsid"].Value = Convert.ToInt64(chosenDishUnitList[i]);
                    cmdInsert.Parameters["@asenderid"].Value = senderId;
                    cmdInsert.Parameters["@auid"].Value = UId;                    if (cmdInsert.ExecuteNonQuery() == 0)
                    {
                        throw new Exception("Insert orderdishpayment error");
                    }
                }

解决方案 »

  1.   

    你的数据库里面paymengID这个字段不能为null
    而你插入的时候没有给这个列负值     sbInsert.Append("INSERT INTO orderdishpayment"); 
                sbInsert.Append("(paymentID, ChosenDishUnitsID, userID, timestamp)"); 
                sbInsert.Append(" VALUES(@apaymentid,@achosendishunitsid,@asenderid,@auid)"); 
      

  2.   

    你command和connect是什么类型的?
      

  3.   

    看错了“paymengID”应该是你少个参数
      

  4.   

    cmdInsert.Parameters["@apaymentid"].Value = paymentID; 检查一下这里的paymentID是不是空值了
      

  5.   

    一楼请你认真读码子,我赋值了。回四楼,paymentID不是空值。。
    究其原因吗?我个人认为是我虽然设置了参数,但是。。好像我的参数值根本就没有关联到我的Command中。。
    神奇的MySQL..................
      

  6.   

    你存储过程里 paymentID 是不是 out 类型?