难道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");
}
}
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");
}
}
而你插入的时候没有给这个列负值 sbInsert.Append("INSERT INTO orderdishpayment");
sbInsert.Append("(paymentID, ChosenDishUnitsID, userID, timestamp)");
sbInsert.Append(" VALUES(@apaymentid,@achosendishunitsid,@asenderid,@auid)");
究其原因吗?我个人认为是我虽然设置了参数,但是。。好像我的参数值根本就没有关联到我的Command中。。
神奇的MySQL..................