";没有为一个或多个必需参数给定值&”;
本文关键字:参数 quot 一个 | 更新日期: 2023-09-27 18:26:35
当我点击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");
}
一个或多个参数为空。检查strPay、strDel或strStatus是否为null。如果其中任何一个为null,则可以发送空字符串或SqlString.null.
如果某个参数值为null,则不会添加该参数,这就是出现此错误的原因。
cmd.Parameters.AddWithValue("@Pay", strPay==null?SqlString.Null:strPay);
要添加nhrobin所说的内容,请考虑将代码更改为:
cmd.Parameters.AddWithValue("@Pay", strPay ?? "");
cmd.Parameters.AddWithValue("@Del", strDel ?? "");
cmd.Parameters.AddWithValue("@Status", strStatus ?? "");
这应该有助于它取得成功。然而,一个更引人注目的问题是:
当这些值为
null
时,我们应该做什么?
这是一个你必须回答的问题。如果我提供的是令人满意的,那么你就做好了。