首页 > 解决方案 > 如何将存储在会话中的值转换为整数

问题描述

我正在尝试使用存储在会话中的值将数据保存到我的数据库中,但是,该值必须是数据库中所述的 int 类型。我该怎么做呢?插入代码如下。

 protected void btnSave_outcome_Click(object sender, EventArgs e)
    {
        if (con.State == ConnectionState.Closed)
            con.Open();
        SqlCommand sqlCmd = new SqlCommand("OutcomeCreateOrUpdate", con);
        sqlCmd.CommandType = CommandType.StoredProcedure;
        sqlCmd.Parameters.AddWithValue("@outcomeID", (hfoutcomeID.Value == "" ? 0 : Convert.ToInt32(hfoutcomeID.Value)));
        sqlCmd.Parameters.AddWithValue("@learning_activity", (ddlActivity.SelectedValue.Trim()));
        sqlCmd.Parameters.AddWithValue("@objectiveID", int.Parse(Session["objectiveID"].ToString()));
        sqlCmd.Parameters.AddWithValue("@audience", (txtAudience1.Text.Trim()));
        sqlCmd.Parameters.AddWithValue("@condition", (txtCondition1.Text.Trim()));
        sqlCmd.Parameters.AddWithValue("@bloom_level", (ddlCategory1.SelectedValue.Trim()));
        sqlCmd.Parameters.AddWithValue("@verb", (ddlVerb1.SelectedValue.Trim()));
        sqlCmd.Parameters.AddWithValue("@product", (txtProduct2.Text.Trim()));
        sqlCmd.Parameters.AddWithValue("@degree", (txtDegree1.Text.Trim()));
        sqlCmd.Parameters.AddWithValue("@statement", ("Given " + txtCondition1.Text.Trim() + ", " + txtAudience1.Text.Trim() + " Will be able to " + ddlVerb1.SelectedItem.Text + " " + txtProduct2.Text.Trim()+ " " + txtDegree1.Text.Trim() +"."));
        //sqlCmd.Parameters.AddWithValue("@moduleID", (ddlmodules.SelectedIndex));
        sqlCmd.ExecuteNonQuery();

        con.Close();
        //string objectiveID = hfobjectiveID.Value;
        string outcomeID = hfoutcomeID.Value;
        Clear();
        if (outcomeID == "")
            lblSuccessMessage.Text = "Saved Successfully";
        else
            lblSuccessMessage.Text = "Updated Successfully";
        //FillGridView(); for outcomes

        new_outcome.Visible = true;
    }

我创建了会话如下

        protected void redirect_outcomes_Click(object sender, EventArgs e)
    {
        Session["objectiveID"] = objectiveID.ToString();
        //Session["module"] = ddlmodules.SelectedValue;
        //Response.Redirect("learningoutcomes.aspx?MultiView1.ActiveIndex=" +2);
        final_objective1.Text = "Given " + txtCondition.Text.Trim() + ", " + txtAudience.Text.Trim() + " Will be able to " + txtVerb.Text.Trim() + " " + txtProduct.Text.Trim() + " .";
        MultiView1.Visible = false;
        GoToAudience1.Visible = false;
        MultiView2.ActiveViewIndex = 0;

    }

标签: c#asp.net

解决方案


您的代码:-

sqlCmd.Parameters.AddWithValue("@objectiveID", int.Parse(Session["objectiveID"].ToString()));

我的建议:-

if(Session["objectiveID"] != null)
{ 

    sqlCmd.Parameters.AddWithValue("@objectiveID", Convert.ToInt32(Session["objectiveID"]));

}

无需使用尝试解析/解析,因为您在会话中仅存储整数值。所以会话有空值或整数值。


推荐阅读