";没有为一个或多个必需参数给定值&”;

本文关键字:参数 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时,我们应该做什么?

这是一个你必须回答的问题。如果我提供的是令人满意的,那么你就做好了。

相关文章: