【问题标题】:Issue With Session pass in another page in asp.net?在asp.net的另一个页面中的会话传递问题?
【发布时间】:2020-02-07 12:48:47
【问题描述】:

我创建了两个单独的表单并将数据存储在一个表中,但问题是数据单独存储行?我想将数据存储在一行中。

然后我创建了两个单独的表单并将数据存储在一个表中,我的数据单独存储有问题的行吗?

表名:经理

数据库字段名:

- managerid int pk autoincrement
- firstname varchar(50)
- lastname varchar(50)
- address varchar(50)
- permanantaddress varchar(50)
- mno int
- experiance int
- currentcompanyname varchar(50)
- previouscompanyname varchar(50)
- currentsalary int
- expectedsalary    int 

Registrationform.aspx

        <div>
           FirstName: <asp:TextBox ID="txtfname" runat="server"></asp:TextBox>
            <br />
           lastName: <asp:TextBox ID="txtlname" runat="server"></asp:TextBox>
            <br />
            <asp:Button ID="Button1" runat="server" Text="Insert" OnClick="Button1_Click" />
        </div>

Registrationform.aspx.cs

        protected void Button1_Click(object sender, EventArgs e)
        {
            string query = "Insert into manager (firstname,lastname) values(@firstname,@lastname)SELECT SCOPE_IDENTITY()";
            SqlCommand cmd = new SqlCommand(query, cn);
            cmd.CommandType = CommandType.Text;

            cmd.Parameters.AddWithValue("@firstname", txtfname.Text);
            cmd.Parameters.AddWithValue("@lastname",txtlname.Text);

            cn.Open();

            int? primaryKey = Convert.ToInt32(cmd.ExecuteScalar());
            this.Session["primaryKey"] = primaryKey;


            if(primaryKey != null)
            {
                Response.Redirect("Contactus.aspx");
            }

            cmd.ExecuteNonQuery();
            cn.Close();

        }

联系人.aspx

            Address:
            <asp:TextBox ID="txtadd" runat="server"></asp:TextBox>
            <br />
            PermanantAddress:
            <asp:TextBox ID="txtperaddress" runat="server"></asp:TextBox>
            <br />
            Mno:
            <asp:TextBox ID="txtmno" runat="server"></asp:TextBox>
            <br />
            <asp:Button ID="Button1" runat="server" Text="Insert" OnClick="Button1_Click" />

Contactus.aspx.cs

        string sessionvariable;
        protected void Page_Load(object sender, EventArgs e)
        {
           sessionvariable = Session["primaryKey"].ToString();
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            string query = "update manager set address=@address,permanantaddress=@permanantaddress,mno=@mno where managerid=@managerid";

            SqlCommand cmd = new SqlCommand(query, cn);
            cmd.CommandType = CommandType.Text;

            cmd.Parameters.AddWithValue("@address", txtadd.Text);
            cmd.Parameters.AddWithValue("@permanantaddress", txtperaddress.Text);
            cmd.Parameters.AddWithValue("@mno", txtmno.Text);

            cn.Open();

            if (sessionvariable != null)
            {  
                **here give an error System.Data.SqlClient.SqlException: Must declare the scalar variable "@managerid"**

                cmd.ExecuteNonQuery();
            }

            cn.Close();

        }

我想将数据存储在一行中。

查看我的监视窗口图片

我的问题是我的问题是单独行中的数据存储区吗?

enter image description here

报错:这里报错 System.Data.SqlClient.SqlException:必须声明标量变量“@managerid”

【问题讨论】:

  • 我在最后一天尝试解决这个问题,但问题没有解决帮助
  • 你的设计一开始就不正确。所有三种形式都只有db 上下文,即manager 与它们相关联,因此您很难跟踪何时发生的情况。您应该考虑为您的三个表单创建三个单独的表,并根据外键关联db 中的三个表。该架构由您决定。目前,您要实现的目标很棘手。您可以使用Session 存储来自不同表单的值,并检查所有三种表单的会话中的值是否存在,但这需要一些逻辑。
  • @RahulSharma session work in contactus page见上图问题是数据存储在单独的行中吗?
  • 您想在会话变量中存储数据表吗?
  • @NaDeRStar 谢谢解决问题谢谢

标签: c# asp.net sql-server session


【解决方案1】:

试试这个

    string sessionvariable;
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        sessionvariable = Session["primaryKey"].ToString();
        string query = "update manager set address=@address,permanantaddress=@permanantaddress,mno=@mno where managerid=@managerid";

        SqlCommand cmd = new SqlCommand(query, cn);
        cmd.CommandType = CommandType.Text;

        cmd.Parameters.AddWithValue("@address", txtadd.Text);
        cmd.Parameters.AddWithValue("@permanantaddress", txtperaddress.Text);
        cmd.Parameters.AddWithValue("@mno", txtmno.Text);

        cn.Open();

        if (sessionvariable != null)
        {  
            **here give an error System.Data.SqlClient.SqlException: Must declare the scalar variable "@managerid"**

            cmd.ExecuteNonQuery();
        }

        cn.Close();

    }

Read More

【讨论】:

    猜你喜欢
    • 2014-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-17
    • 1970-01-01
    相关资源
    最近更新 更多