当我点击btnCheckout时,它会给我 “没有给出一个或多个必需参数的值。”
有谁知道为什么?
protected void btnCheckOut_Click(object sender, ImageClickEventArgs e)
{
string strPay = DropDownList1.Items[DropDownList1.SelectedIndex].Text;
string strDel = DropDownList2.Items[DropDownList2.SelectedIndex].Text;
OleDbConnection mDB = new OleDbConnection();
mDB.ConnectionString = "Provider = Microsoft.ACE.OLEDB.12.0;Data source="
+ Server.MapPath("~/App_Data/webBase.accdb");
string strStatus = "CheckedOut";
int intOrderNo = (int)Session["sOrderNo"];
String strSqlUpdate = "UPDATE orderInfo SET orderPayMode = @Pay, "
+ "orderDelMode = @Del, orderStatus = @Status WHERE orderNo = " + intOrderNo;
OleDbCommand cmd;
cmd = new OleDbCommand(strSqlUpdate, mDB);
cmd.Parameters.AddWithValue("@Pay", strPay);
cmd.Parameters.AddWithValue("@Del", strDel);
cmd.Parameters.AddWithValue("@Status", strStatus);
mDB.Open();
cmd.ExecuteNonQuery();
mDB.Close();
Response.Redirect("OrderDetails.aspx");
}
答案 0 :(得分:3)
一个或多个参数为空。检查strPay,strDel或strStatus是否为null。 如果其中任何一个为null,则可以发送空字符串或SqlString.Null。
如果某个参数值为null,则不会添加该参数,这就是为什么会出现此错误。
cmd.Parameters.AddWithValue("@Pay", strPay==null?SqlString.Null:strPay);
答案 1 :(得分:1)
要添加nhrobin所说的内容,请考虑将代码更改为:
cmd.Parameters.AddWithValue("@Pay", strPay ?? "");
cmd.Parameters.AddWithValue("@Del", strDel ?? "");
cmd.Parameters.AddWithValue("@Status", strStatus ?? "");
这应该有助于它成功。然而,一个更引人注目的问题是:
当这些值为
时, 应该null
这是一个你必须要回答的问题。如果我提供的内容令人满意,那么你就可以了。